解密SparkStreaming运行机制和架构

来源:互联网 发布:java 切面 编辑:程序博客网 时间:2024/05/22 14:39

本文主要从五个方面来整体考虑SparkStreaming的机制和架构,如下图:

Spark Streaming运行机制和架构解析

图中A是action,RDD Graph中有三个Job
首先看到的是RDD的DAG,SparkStreaming在RDD的DAG的基础上加入了时间维度,而RDD的DAG依赖又叫空间维度,Dstream就是在RDD的基础上加上了时间维度,所以整个SparkStreaming就是时空维度。
空间维度:代表的RDD的依赖关系构成的具体的处理逻辑的步骤,是用Dstream来表示的;
时间维度:按照特定时间间隔不断地生成Job的实例并在集群上运行。

随着时间的流逝,产生了不同的RDD Graph依赖关系的实例,因为不同的RDD Graph的依赖关系处理的数据多少以及数据内容不一样,所以Dstream的Graph就是RDD Graph的模板,随着时间不断地把模板实例化,即在时间间隔内用数据去填充模板,变成RDD Graph。动态的Job控制器将流进来的数据根据时间间隔切分,并且按照Dstream模板复制或实例化出RDD DAG的具体实例.
另外,在源码中可以看到DstreamGraph是一个类,Dstream的依赖关系构成了DstreamGraph
DStream随着时间不断地产生RDD,Dstream是逻辑级别的,RDD是物理级别的

private[streaming] var generatedRDDs = new HashMap[Time,RDD[T]]()

DStream的compute需要传入一个时间参数,通过时间获取相应的RDD,然后再对RDD进行计算

/** Method that generates a RDD for the given time */def compute(validTime: Time): Option[RDD[T]] 
0 0
原创粉丝点击