本期內容:架構
1,Spark Streaming中的架構設計和運行機制框架
2,Spark Streaming的深度思考oop
RDD的模板是DStream,RDD DAG的模板是DStreamGraph,Spark Streaming是在RDD的基礎上加上時間維度,在Driver端會啓動一個定時器,間隔BatchDuration生成Job,在Executor端會啓動一個定時器,間隔200ms把接收到的數據放入BlockManager中,並把元數據信息上報給Driver端的ReceiverTracker,整個程序引擎是無時無刻在運行的。架構設計
JobGenerator類中有一個timer對象,其間隔BatchDuration發送GenerateJobs消息來生成Job。設計
BlockGenerator類中有一個blockIntervalTimer對象,每隔200ms調用updateCurrentBuffer方法,把接收到的數據交給BlockManager進行存儲,並向ReceiverTracker上報元數據信息。對象
RecurringTimer類中的loop方法是一個死循環,一直執行,間隔必定的週期回調傳入的方法。it
此外,默認的並行度具備遺傳性,父RDD的partition個數會遺傳給子RDD,當RDD中每一個partition中數據較少時,爲了提升效率,能夠先調用coalesce方法合併到指定的partition個數。Spark Streaming中存在空RDD,即RDD裏面沒有數據,此時也會生成Job,Job的生成是定時觸發的,不關心RDD中是否有數據,這是爲了使整個框架能正常運行。io