400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

spark任务运行过程的源码分析

spark任务运行的源码分析

在整个spark任务的编写、提交、执行分三个部分:
① 编写程序和提交任务到集群中
②sparkContext的初始化
③触发action算子中的runJob方法,执行任务

目前创新互联建站已为成百上千的企业提供了网站建设、域名、雅安服务器托管网站托管、企业网站设计、义马网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

(1)编程程序并提交到集群:

①编程spark程序的代码
②打成jar包到集群中运行
③使用spark-submit命令提交任务
在提交任务时,需要指定 --class 程序的入口(有main方法的类),
1) spark-submit --class xxx
2) ${SPARK_HOME}/bin/spark-class org.apache.spark.deploy.SparkSubmit $@
3) org.apache.spark.launcher.Main
submit(appArgs, uninitLog)
doRunMain()
runMain(childArgs, childClasspath, sparkConf, childMainClass, args.verbose)
childMainClass:…./.WordCount (自己编写的代码的主类)
mainClass = Utils.classForName(childMainClass)
val app: SparkApplication = if() {} else {new JavaMainApplication(mainClass)}
app.start(childArgs.toArray, sparkConf) // 通过反射调用mainClass执行
// 到此为止,相当于调用了我们的自己编写的任务类的main方法执行了。!!!
val mainMethod = klass.getMethod("main", new ArrayString.getClass)
mainMethod.invoke(null, args)
④开始执行自己编写的代码

(2)初始化sparkContext:

当自己编写的程序运行到:new SparkContext()时,就开始了精妙而细致的sparkContext的初始化。
sparkContext的相关介绍:sparkContext是用户通往spark集群的唯一入口,可以用来在spark集群中创建RDD、累加器和广播变量。sparkContext也是整个spark应用程序的一个至关重要的对象,是整个应用程序运行调度的核心(不是资源调度的核心)。在初始化sparkContext时,同时的会初始化DAGScheduler、TaskScheduler和SchedulerBackend,这些至关重要的对象。
sparkContext的构建过程
spark任务运行过程的源码分析

1)Driver端执行的代码:

初始化 TaskScheduler
 初始化 SchedulerBackend
 初始化 DAGScheduler

spark任务运行过程的源码分析

2)worker和master端执行的代码:

driver向master注册申请资源。
  Worker负责启动executor。

spark任务运行过程的源码分析

(3)触发action算子中的runJob方法:

spark任务运行过程的源码分析

spark任务运行总结:


文章标题:spark任务运行过程的源码分析
链接分享:http://mbwzsj.com/article/jpdjge.html

其他资讯

让你的专属顾问为你服务