本期内容:函数
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消息。