一、Spark 通信架构介绍
Spark 中通信框架的发展:
1、Spark 早期版本中采用 Akka 作为内部通信部件。
2、Spark 1.3 中引入 Netty 通信框架,为了解决 Shuffle 的大数据传输问题使用。
3、Spark 1.6 中 Akka 和 Netty 可以配置使用,Netty 完全实现了 Akka 在 Spark 中的功能。
4、Spark 2 系列中,不再使用 Akka,使用 Netty。
二、Spark 通讯架构解析
架构图为:
1、RpcEndpoint
RPC 通信终端,Spark 针对每个节点(Client/Master/Worker) 都称之为一个 RPC 终端,且都实现 RpcEndpoint 接口,内部根据不同端点的需求,设计不同的消息和不同的业务处理,如果需要发送(询问)则调用 Dispatcher。在 Spark 中,所有的终端都存在生命周期:
(1) Constructor
(2) onStart
(3) receive
(4) onStop
2、RpcEnv
RPC 上下文环境,每个 RPC 终端运行时依赖的上下文环境称为 RpcEnv。