談?wù)凷park與Spark-Streaming關(guān)系
spark程序是使用一個spark應(yīng)用實例一次性對一批歷史數(shù)據(jù)進行處理,spark streaming是將持續(xù)不斷輸入的數(shù)據(jù)流轉(zhuǎn)換成多個batch分片,使用一批spark應(yīng)用實例進行處理,側(cè)重點在Steaming上面。我們常說的Spark-Streaming依賴了Spark Core的意思就是,實際計算的核心框架還是spark。我們還是上一張老生常談的官方圖:
從原理上看,我們將spark-streaming轉(zhuǎn)變?yōu)閭鹘y(tǒng)的spark需要什么?
需要構(gòu)建4個東西:
一個靜態(tài)的 RDD DAG 的模板,來表示處理邏輯;
一個動態(tài)的工作控制器,將連續(xù)的 streaming data 切分數(shù)據(jù)片段,并按照模板復(fù)制出新的 RDD
DAG 的實例,對數(shù)據(jù)片段進行處理;
Receiver進行原始數(shù)據(jù)的產(chǎn)生和導(dǎo)入;Receiver將接收到的數(shù)據(jù)合并為數(shù)據(jù)塊并存到內(nèi)存或硬盤中,供后續(xù)batch RDD進行消費;對長時運行任務(wù)的保障,包括輸入數(shù)據(jù)的失效后的重構(gòu),處理任務(wù)的失敗后的重調(diào)。
至于上述過程具體怎么實現(xiàn),我們會在spark-streaming源碼分析的文章中一一解決。本文中圖片文字來自于網(wǎng)絡(luò)。