本系列主要描述Spark Streaming的运行流程,然后对每个流程的源码分别进行解析
之前总听同事说Spark源码有多么棒,咱也不知道,就是疯狂点头。今天也来撸一下Spark源码。
对Spark的使用也就是Spark Streaming使用的多一点,所以就拿Spark Streaming开涮。
源码中的一些类
这里先列举一些源码中的类,大家先预热一下。
StreamingContext:这是Spark Streaming程序的入口,提供了运行时上下文环境
DStream:是RDD在Spark Streaming中的实现,是连续的RDD(相同类型)序列,表示连续的数据流
JobScheduler:生成和调度job
DStreamGraph:保存DStream之间的依赖关系
JobGenerator:根据DStream依赖生成job
ReceiverTracker:Driver端用于管理ReceiverInputDStreams执行的管家
EventLoop:一个事件循环,用于接收来自调用方的事件并处理事件线程中的所有事件。它将启动一个专用事件线程来处理所有事件。内部使用LinkedBlockingDeque实现。
RecurringTimer:相当于一个定时器,定时执行某个函数
ReceiverSupervisor:Executor端管理Receiver的管家