ReceiverTracker详解
回顾,数据产生与导入
的基本工作流程:
- (1) 由
Receiver
的总指挥ReceiverTracker
分发多个 job(每个 job 有 1 个 task),到多个 executor 上分别启动ReceiverSupervisor
实例; - (2) 每个
ReceiverSupervisor
启动后将马上生成一个用户提供的Receiver
实现的实例 —— 该Receiver
实现可以持续产生或者持续接收系统外数据,比如TwitterReceiver
可以实时爬取 twitter 数据 —— 并在Receiver
实例生成后调用Receiver.onStart()
。 ReceiverTracker
支持的消息有 10 种:
一方面 Receiver 将通过 AddBlock 消息上报 meta 信息给 ReceiverTracker,另一方面 JobGenerator 将在每个 batch 开始时要求 ReceiverTracker 将已上报的块信息进行 batch 划分,ReceiverTracker 完成了块数据的 meta 信息管理工作。
具体的,ReceiverTracker 有一个成员 ReceivedBlockTracker,专门负责已上报的块数据 meta 信息管理。