本期内容:
1,解密 Spark Streaming 运行机制
2,解密 Spark Streaming 架构
解密 Spark Streaming 运行机制和架构
为了形象地说明RDD 与 DStream 之间的关系,我们用图形的方式表示如下:
横轴代表时间维度:按照特定的时间间隔不断的生成 Job 的实例,并在集群上运行。
纵轴代表空间维度:代表的是RDD的依赖关系构成的具体的处理逻辑的步骤,是用DStream Graph来表示的。
随着时间的流逝,基于DStream Graph 不断的生成以RDD Graph 也就是DAG的方式生成Job,并通过Job Scheduler的线程池的方式提交给Spark Cluster不断的执行。
由以上可知,RDD 与 DStream 的关系如下:
DStream 是逻辑级别的,而 RDD 是物理级别的,DStream 是 RDD 的更高级别的抽象。
DStream 是 RDD 的模板,DStream的依赖关系构建的DStream Graph 又是 RDD DAG的模板。
注意:空间维度需要 RDD DAG 的生成模板DStreamGraph,需要 TimeLine 的 Job 控制器。
DStream 是 Spark 编程的基本单位。
DStream 就是 RDD 的集合,随着时间的流逝,DStream内部不断的产生RDD,从DStream的源码中可以看到,内部有一个HashMap类型的变量存储了其内部不断产生的RDD。
对DStream的 transfrom 操作转过来就是对其内部集合中的RDD进行操作,对RDD的操作又构成了RDD之间的依赖关系,就构成了DAG的依赖关系。而为什么要对RDD进行操作,这是由对DStream的业务逻辑操作即空间维度决定的,空间维度作用于DStream的这样一个集合,随着时间的流逝,每个Batch Interval基于其数据产生的RDD的 transform 操作,进而产生了RDD的DAG依赖关系,然后所谓的JobScheduler根据时间调度基于RDD的依赖关系,把作业发布到Spark集群上去运行,不断地产生Spark作业。
DStream的继承结构如下图所示:
备注:
更多私密内容,请关注微信公众号:DT_Spark
更多干货请访问微博:http://weibo.com/ilovepains
每晚 20:00 大数据 Spark 技术永久免费公开课,YY频道:68917580