Spark Streaming揭秘 Day19
架构设计和运行机制
今天主要讨论一些SparkStreaming设计的关键点,也算做个小结。
DStream设计
首先我们可以进行一个简单的理解:DStream就是加上时间维度的RDD。RDD的模板是DStream,DAG的模板是DStreamGraph,RDD的依赖关系就是DStream的依赖关系。
但是,从DStream的设计来看,我们会发现,DStream的操作和RDD并不是一一对应的,DStream并不直接支持join、orderBy等操作,并增加了window和state等特定操作。
从设计角度出发,DStream只是对RDD的一个封装,DStream和DStreamGraph只是这个时间的BatchDuration产生RDD功能的一部分,在时间维度下方便我们管理整个RDD生命周期的方方面面,只是方便而已。
Timer设计
整个SparkStreaming的设计理念是时间驱动,其驱动力就是定时器Timer。JobScheduler说到底,主要用途就是用来封装定时器。
其核心是两个定时器,分别位于和BlockGenerator和JobGenerator中:
blockIntervalTimer不断产生数据。
timer则是不断产生作业。
并且,我们发现定时器是一个死循环逻辑,也就是说整个集群无时不刻在运行。
我们可以认为,SparkStreaming从整体来说,就是由Timer触发周而复始的接收数据和产生Job处理。
欲知后事如何,且听下回分解
DT大数据每天晚上20:00YY频道现场授课频道68917580