Spark core上面有4个流行的框架:SparkSQL、流计算、机器学习、图计算。从框架入手可以更清晰地了解Spark Core的内容。
Spark Streaming工作原理:
Spark Sreaming接收实时输入数据流并将它们按批次划分,然后交给Spark引擎处理生成按照批次划分的结果流。
DStream Graph是RDD DAG 的模板,DStream是逻辑级别的,而RDD是物理级别的。DStream是随着时间的流动内部将集合封装RDD。
DStream就是对RDD操作封装的集合,对DStream操作的transform的操作就会作用于内部封装的集合的每一个RDD,所以对RDD的操作就产生了RDD之间的依赖关系就构成了DAG的依赖关系。
为什么会对RDD进行操作?这个是对DStream操作的业务逻辑,也就是空间维度决定的,这空间维度作用于DStream这样一个集合,随着时间的流逝每个Batch Interval形成了具体的数据集产生了RDD,
对RDD进行transform操作,进而形成了RDD的依赖关系RDD DAG,形成job。然后jobScheduler根据时间调度,基于RDD的依赖关系,把作业发布到Spark Cluster上去运行,不断的产生Spark作业。
基于Spark Core的都是基于RDD编程,而基于Spark Streaming的则是基于DStream编程。DStream就是在RDD的基础上,加上了时间维度。
Spark Steaming精妙之处在于Job的划分只依赖于时间,这最大程度的解耦合。
Spark Steaming具体的Job运行在Spark Cluster之上,系统容错至关重要。单个Job的容错机制和RDD的容错机制相同,此外还有自己框架的容错机制,如可以动态调整CPU、线程等资源。
事物处理的关键在于系统崩溃的情况下仍然能保持语意的一致性。
那DStream Graph是根据什么生成的呢?DStream(离散流)的依赖关系。
资料来源于:
DT_大数据梦工厂(Spark发行版本定制)微信公众号:DT_Spark
新浪微博:http://www.weibo.com/ilovepains
如果您对大数据Spark感兴趣,可以免费听由王家林老师每天晚上20:00开设的Spark永久免费公开课,地址YY房间号:68917580