Spark Streaming消息通信过程


1、Spark Streaming消息通信总体流程

在启动流处理引擎的过程中,将进行启动所有的流数据接受器Receiver和注册流数据接收器Receiver两个消息通信。在接收存储流数据中,当数据块存储完成后发送添加数据块消息,而当Spark Streaming停止时,需要发送关闭所有的流数据接收器Receiver消息,整个流程如下图:

Spark Streaming消息通信过程_第1张图片

2、Spark Streaming消息通信具体流程

一、在启动流引擎过程中,JobScheduler会在内部启动ReceiverTracker和ReceiverTrackerEndPoint终端点,当ReceiverTracker准备完毕后向终端点发送startAllReceivers消息,通知其分发并启动所有的流数据接收器Receiver,其代码如下:

Spark Streaming消息通信过程_第2张图片
Spark Streaming消息通信过程_第3张图片

二、启动流数据接收器Receiver前,ReceiverSupervisor会向ReceiverTrackerEndPoint终端点发送RegisterReceiver注册信息,当注册成功后才会继续流数据接收器Receiver的启动。其中注册过程的代码是在ReceiverSupervisor的startReceiver方法中,具体如下:

Spark Streaming消息通信过程_第4张图片

三、流数据接收器Receiver接收数据的过程中,当保存完一个数据块时,作为数据转储的管理者ReceiverSupervisor会把数据块的元信息发送给ReceiverTrackerEndPoint终端点,ReceiverTracker再把这些信息转发给ReceiverBlockTracker,由它负责管理接收到数据块的元信息。发送增加数据块消息代码位于ReceiverSupervisorImpl的pushAndReportBlock方法中,具体代码如下:

Spark Streaming消息通信过程_第5张图片

四、当SparkStreaming停止时,ReceiverTracker发送注销所有流数据接收器Receiver消息,ReceiverTrackerEndPoint终端点接到消息后会调用ReceiverTracker.stop方法注销,在停止的过程当中,ReceiverTracker会发送两次注销消息,发送的间隔为10S,用于等待流数据接收器Receiver。

Spark Streaming消息通信过程_第6张图片


参考内容

1、https://blog.csdn.net/zhanglh046/article/details/78505067

2、《图解Spark核心技术与案例实战》

你可能感兴趣的:(Spark Streaming消息通信过程)