第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消息。

 

相關文章
相關標籤/搜索