通过学习Spark源码为了更深入的了解Spark。主要按照以下流程进行Spark的源码分析,包含了Spark集群的启动以及任务提交的执行流程:
- Spark RPC分析
- start-all.sh
- Master启动分析
- Work启动分析
- spark-submit.sh脚本分析
- SparkSubmit分析
- SparkContext初始化
1.Spark RPC分析
1.1.概述
了解Spark分布式集群的执行流程,那就不得不从Spark的网络通信说起,例如:
- driver和master的通信,比如driver会想master发送RegisterApplication消息
- master和worker的通信,比如worker会向master上报worker上运行Executor信息
- executor和driver的的通信,executor运行在worker上,spark的tasks被分发到运行在各个
- executor中,executor需要通过向driver发送任务运行结果。
- worker和worker的通信,task运行期间需要从其他地方fetch数据,这些数据是由运行在其他worker上的executor上的task产生,因此需要到worker上fetch数据
总的说来,Spark通信主要存在于两个方面:
- 汇集信息,例如task变化信息,executor状态变化信息。
- 传输数据,spark shuffle(也就是reduce从上游map的输出中汇集输入数据)阶段存在大量的数据传输。
Spark通信框架版本更迭:
Spark 1.6之前,Spark 的 RPC 是基于 Akaa 来实现的

本文深入探讨Spark的RPC机制,从SparkRPC的演变背景到其实现原理。内容涵盖Spark基于Netty的RPC框架组件,如RpcEndpoint、RpcEndpointRef、RpcEnv和它们在消息传递中的角色。此外,还分析了Dispatcher、Inbox与Outbox在通信中的作用,揭示Spark集群中各个组件如何通过消息交互完成任务调度和数据传输。
最低0.47元/天 解锁文章
584

被折叠的 条评论
为什么被折叠?



