Spark資源模型

2021-08-13 12:01:49 字數 1858 閱讀 4856

spark作業執行圖:

1. 使用spark-submit提交乙個spark應用,這個應用/作業會啟動乙個對應的driver程序,這個driver會根據提交模式的不同,可能在本地啟動(client),也可能在集群中某個工作節點(cluster)上啟動。

driver服務程序啟動,會根據我們設定的引數,占用一定量的cpu和記憶體。

2. driver啟動完成後做的第一件事是像集群的資源管理器去申請資源。

standalone(master)

yarn(resourcemanager)

申請應用所需要的資源,其實這兒所指的資源就是executor服務程序

1.5版本以前,executor啟動以後占用一定的記憶體,這部分記憶體主要分為三塊:

第一塊:就是用來快取資料(60 % )

第三塊:task執行我們編寫的**的時候使用(20%)

3. 資源管理器會根據我們為spark作業設定的資源引數,在各個工作節點上啟動一定數量的executor程序。每個executor程序都占有一定數量的cpu和記憶體。

4. driver在申請到資源以後,開始排程和執行我們提交的**。driver會把我們提交的任務劃分為多個stage,每個stage都執行一部分的**片段,並為每個stage都建立一批task。將這寫task分配到各個executor程序中去執行。也就是task就是我們的最小計算單元。

5. 乙個stage內所有的task都執行完畢後,會在各個節點本地的磁碟檔案中寫入計算的中間結果。 driver會調動執行下乙個stage,下乙個stage的task的輸入就是上乙個stage的task的輸出。就是如此迴圈往復的執行,直到**停止為止。

6. 若在**內執行了持久化操作(cache,persist)的時候,會根據持久化的級別的不同,每個task計算出來的資料也會儲存到executor程序的記憶體或者是所在的磁碟檔案中。

spark記憶體模型:

spark在乙個executor中的記憶體分為三塊,一塊是execution記憶體,一塊是storage記憶體,一塊是other記憶體。

• execution記憶體是執行記憶體,文件中說join,aggregate都在這部分記憶體中執行,shuffle的資料也會先快取在這個記憶體中,滿了再寫入磁碟,能夠減少io。其實map過程也是在這個記憶體中執行的。(0.25)

• storage記憶體是儲存broadcast,cache,persist資料的地方。(0.5)

• other記憶體是程式執行時預留給自己的記憶體。(執行**的時候使用)(0.25)

1.5版本

1.6版本

在spark-1.6.0後加入了堆外記憶體,進一步優化了spark的記憶體使用,堆外記憶體使用jvm堆以外的記憶體,不會被gc**,可以減少頻繁的full gc,所以在spark程式中,會長時間逗留再spark程式中的大記憶體物件可以使用堆外記憶體儲存。使用堆外記憶體有兩種方式,一種是在rdd呼叫persist的時候傳入引數storagelevel.off_heap,這種使用方式需要配合tachyon一起使用。另外一種是使用spark自帶的spark.memory.offheap.enabled 配置為true進行使用,但是這種方式在1.6.0的版本還不支援使用,只是多了這個引數,在以後的版本中會開放。

oom的問題通常出現在execution這塊記憶體中,因為storage這塊內存在存放資料滿了之後,會直接丟棄記憶體中舊的資料,對效能有影響但是不會有oom的問題。

Spark(六) Spark計算模型

整個spark框架都是基於rdd運算元來進行計算的。what is rdd?resilient distributed dataset rdd 分布式彈性資料集,是spark上的乙個核心抽象 表示用於平行計算的,不可修改的,對資料集合進行分片的資料結構 簡單地,可以將rdd看成是spark平台上的通...

Spark 模型總結

註明 以及相關資料均來自scalable machine learning from berkelyx,只是個人總結使用,侵權即刪 mr的價值體現在對大資料集的分布式處理上。如下面的圖例 來自scalable machine learning from berkelyx 將大規模的文件先分開成不同的...

Spark計算模型

rdd resilient distributed dateset 叫做彈性分布式資料集,是spark中最基本的資料抽象,它代表乙個不可變 可分割槽 裡面的元素可平行計算的集合。rdd具有資料流模型的特點 自動容錯 位置感知性排程和可伸縮性。rdd之間存在依賴關係,可進行恢復,rdd代表的資料集可以...