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