spark效能調優 本地化等待時長

2021-08-21 12:37:14 字數 995 閱讀 8470

本地化級別:

1. 程序本地化

2. 節點本地化

3. 機架本地化

4. any(都沒有)

但是,通常來說,有時候,事與願違,可能task沒有機會分配到它的資料所在的節點,可能那個節點的計算資源和計算能力都滿了,所以,這種時候,通常倆說,spark會等待一段時間,預設情況下是3s(不是絕對的,還有很多情況,對不同本地化級別都會去等待),到最後,實在等待不了了,就會選擇乙個比較差的本地化級別,比如說,將task分配到靠它要計算的資料所在的節點,比較近的乙個節點,然後計算

但是對於第二種情況,通常來說,肯定要發生資料傳輸,task會通過器所在節點的blockmanager來獲取資料,blockmanager發現自己本地沒有資料,會通過乙個getremote()方法,通過transferservice(網路傳輸元件)從資料所在接地那的blockmanager中,獲取資料,通過網路傳輸回task所在節點。

對於我們來說,當然不希望類似第二種情況,最好的,當然是task和資料在乙個節點上,直接從本地executor的blockmanager中獲取資料,純記憶體,或者帶一點磁碟i/o;

我們什麼時候要調節這個引數

要觀察日誌,spark作業的執行日誌,在本地看到比較全的日誌

日誌裡面會顯示,starting task。。。這裡會顯示是什麼級別

觀察大部分task的資料本地化級別

如果大多都是process_local,那就不用調節了

如果是發現,好多的級別都是node_local、any,那麼最好就去調節一下資料的等待時長、

調節完,應該是要反覆調節,每次調節完以後,再來執行,觀察日誌

看看大部分的task的本地化級別有沒有提公升,看看,整個spark作業的執行時間有沒有縮短

不要本地化級別倒是提公升了,但是因為大量的等待時長,spark作業執行時間反而增加了,那就不要調節了

怎麼調節

spark.locality.wait 預設是3s

set("spark.locality.wait","10")

Spark效能調優系列 資料本地化

背景 資料本地化對於spark job效能有著巨大的影響,如果資料以及要計算它的 是一起的,那麼效能當然會非常高。但是如果資料與計算它的 是分開的,那麼其中之一必須到另外一方機器上,通常來說,移動 到其它節點,會比移動資料到 所在的節點上,速度要快的多。因為 較小,spark也正是基於這個資料本地化...

Spark效能調優4 本地化等待時間

spark 在driver 上,對的每乙個 stage 的task 進行分配之前,都會計算出每個 task 要計算的是哪個分片資料,rdd的某個 partition spark 的task 分配演算法,優先,會希望每個 task 正好分配到它要計算的資料所在的節點,這樣的話,就不用在網路間傳輸資料 ...

54 效能調優之調節資料本地化等待時長

本文為 spark大型電商專案實戰 系列文章之一,主要介紹在實際專案中通過調節資料本地化等待時長進行效能優化。但是呢,通常來說,有時事與願違,可能 task 沒有機會分配到它的資料所在的節點,可能那個節點的計算資源和計算能力都滿了,通常來說,這時 spark 會等待一段時間,預設情況下是3s鐘 不是...