本期内容:
1 解密Spark Streaming运行机制
2 解密Spark Streaming架构
一、Spark Streaming工作原理:Spark Sreaming接收实时输入数据流并将它们按批次划分,然后交给Spark引擎处理生成按照批次划分的结果流。
二、DStream是逻辑级别的,而RDD是物理级别的。DStream是随着时间的流动内部将集合封装RDD。对DStream的操作,转过来对其内部的RDD操作。
Spark Core处理的每一步都是基于RDD的,RDD之间有依赖关系。
如上图:RDD的DAG显示的是有3个Action,会触发3个job,RDD自下向上依赖,RDD产生job就会具体的执行。
从DSteam Graph中可以看到,DStream的逻辑与RDD基本一致,它就是在RDD的基础上加上了时间的依赖。
RDD的DAG又可以叫空间维度,也就是说整个Spark Streaming多了一个时间维度,也可以成为时空维度。
从这个角度来讲,可以将Spark Streaming放在坐标系中。其中Y轴就是对RDD的操作,RDD的依赖关系构成了整个job的逻辑,而X轴就是时间。随着时间的流逝,固定的时间间隔(Batch Interval)就会生成一个job实例,进而在集群中运行。
三、
空间维度:代表是RDD的依赖关系构成的具体的处理逻辑步骤,是用DStreaming Graph来表示的;
时间维度:按照特定时间间隔不断地生成Job的实例并在集群上运行;
随着时间的流程基于DStreamGraph不断地生成以RDD Graph也就是DAG的方式产生JOB,
并通过JobScheduler的线程池的方式提交给Spark Cluster不断地执行;
(1)需要RDD DAG的生成模板 DStreamGraph;
(2)需要基于Timeline的Job控制器;
(3)inputStreams 和 outputStreams代表 数据输入和输出;
(4)具体Job运行在Spark Cluster 之上,此时系统容错就至关重要;
(5)事务处理,在处理出现崩溃的情况下 如何保证Exactly Once的事务语义