Spark-submit执行流程,了解一下

发布网友 发布时间:17小时前

我来回答

1个回答

热心网友 时间:15小时前

摘要:本文主要通过Spark代码走读来解析spark-submit的执行流程。

在进行Spark任务提交时,会使用“spark-submit -class .....”命令,这是Spark目录下的shell脚本,其作用在于查询spark-home并调用spark-class命令。随后,spark-class执行时会以SparkSubmit类为参数进行任务向Spark程序的提交。shell脚本执行的步骤包括:加载spark环境参数、载入java、jar包等、调用org.apache.spark.launcher中的Main进行参数注入、监测任务执行状态。

在任务提交后,shell脚本会构建cmd执行任务。检测执行模式(class或submit),在submit模式中进行参数检查(SparkSubmitOptionParser),构建命令行并打印至spark-class中,最后调用exec执行spark命令行提交任务。组装而成的cmd内容包含了任务执行的参数和逻辑。

Spark任务提交后,会在SparkSubmit中的main方法中执行。doSubmit()方法对log进行初始化,添加spark任务参数,通过参数类型执行任务,包括SUBMIT、KILL(仅限于Standalone和Mesos集群模式)、REQUEST_STATUS(仅限于Standalone和Mesos集群模式)、PRINT_VERSION等操作。调用submit函数,doRunMain为集群调用子main class准备参数,之后调用runMain()执行任务。

Spark在作业提交时会根据不同的参数和模式采用不同的执行分支。最后,在runMain中将所需参数传递给执行函数,完成任务执行。

本文分享自华为云社区《Spark内核解析之Spark-submit》,由笨熊爱喝cola撰写。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com