spark整个流程
第6步详解解析:
6.1的LauncherPool为线程池,它会启动一个线程类NMclient用来和NodeManager通信用,然后会启动NodeManager中的一个进程ExecutorBackend,然后启动两个通信模块(也就是RPC终端,用来通信)
通信注册完后,第9步建立Executor计算对象(线程),也就是跑RDD的承担者
注:7,8,9,10步在通讯架构中详解
任务切分
第十步:任务切分解析:如下图
所以当Exeuctor启动完成后,就开始跑代码,直到遇到第一个行动算子,这就代表第一个任务开始划分了。
划分信息如上图,是先遇到行动算子然后倒着推出Task数的;最后这个job得到的所有Task被封装在TaskSet中(TaskSet不一定是一个,如果Task多的话会有多个TaskSet)一起发往Task调度器;以上这个过程为DAGScheduler。
注:RDD任务切分中间分为:Application、Job、Stage和Task
(1)Application:初始