第16课:Spark Streaming源码解读之数据清理内幕完全解密

本期内容:函数

1,Spark Streaming数据清理缘由和现象对象

2,Spark Streaming数据清理代码解析生命周期

 

由于RDD是由DStream产生的,对RDD的操做都是基于对DStream的操做,DStream负责RDD的生命周期。咱们通常会调用DStream的foreachRDD操做,进行输出到HDFS的操做。foreachRDD操做会实例化ForEachDStream对象。ci

 

 

在ForEachDStream的generateJob方法中,调用了传入的方法foreachFunc,做用在这个BatchTime生成的RDD。rem

 

 

在JobGenerator类中处理消息的函数processEvent中,当接收到清除元数据消息,则调用clearMetadata方法,当接收到清除checkpoint数据,则调用clearCheckpointData方法。io

 

 

clearMetadata方法中,先清除DStreamGraph的metadata信息,而后根据是否进行checkpoin操做,或是发送DoCheckpoint消息,或是清除掉ReceiverTracker和InputInfoTracker上以前的数据。foreach

 

 

DStreamGraph的clearMetadata方法会遍历并调用全部OutputStream的clearMetadata方法,把以前persist的RDD进行unpersist操做,从generatedRDDs中清除掉,若是是BlockRDD的话,还会调用removeBlocks方法来移除,最后删除它的依赖dependencies.foreach(_.clearMetadata(time))。遍历

 

 

当前Batch完成后会发送ClearMetadata消息。meta

 

onBatchCompletion方法是被handleJobComplation方法调用的。方法

 

handleJobComplation方法是接收到JobCompleted消息时调用的。

 

在JobHandler的执行过程当中,先会发送JobStarted消息,而后调用job的run方法,最后发送JobCompleted消息。

 

相关文章
相关标签/搜索