天天看點

《Spark大資料分析:核心概念、技術及實踐》一3.8 Spark作業

 本節書摘來自華章出版社《spark大資料分析:核心概念、技術及實踐》一書中的第3章,第3.8節,作者[美] 穆罕默德·古勒(mohammed guller),更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

3.8 spark作業

rdd上的轉換、操作和緩存方法構成了spark應用的基礎。從本質上說,rdd描述了spark程式設計模型。既然我們介紹過了程式設計模型,那麼接下來我們介紹在spark應用中這些是怎麼結合在一起的。

作業指的是spark将要執行的一些計算,它們将操作的結果傳回給驅動程式。一個應用可以發起一個或多個作業。通過調用rdd的操作方法可以發起一個作業。也就是說,一個操作方法會觸發一個作業。如果一個操作是從未緩存的rdd或未緩存rdd的後代rdd發起的,spark将會從存儲系統中讀取資料,從此開始作業。如果一個操作是從緩存過的rdd或者緩存過的rdd的後代rdd發起的,那麼spark就會從那個緩存過的rdd開始作業。接下來,spark會按照操作方法的要求執行必要的轉換操作來建立rdd。最後,執行操作所需的計算,一旦結果出來後,便将它傳回給驅動程式。

當一個應用調用rdd的操作方法時,spark會建立由若幹個階段構成的dag。spark根據shuffle邊界來将不同任務劃分成不同的階段。不需要shuffle操作的任務被劃分到同一個階段。那些輸入資料是已經做過shuffle操作的任務将開始一個新的階段。

一個階段可以由一個或者多個任務構成。spark把任務送出給執行者,執行者将并行執行任務。在節點間排程任務的依據是資料分布情況。如果一個節點在處理任務時失效了,spark會把這個任務送出給其他節點。

繼續閱讀