Spark效能優化 資料本地化優化

2021-09-24 08:34:34 字數 1190 閱讀 2810

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

資料本地化,指的是,資料離計算它的**有多近。基於資料距離**的距離,有幾種資料本地化級別

1、process_local:資料和計算它的**在同乙個jvm程序中。

2、node_local:資料和計算它的**在乙個節點上,但是不在乙個程序中,比如在不同的executor程序中,或者是資料在hdfs檔案的block中。

3、no_pref:資料從**過來,效能都是一樣的。

4、rack_local:資料和計算它的**在乙個機架上。

5、any:資料可能在任意地方,比如其他網路環境內,或者其他機架上。

spark傾向於使用最好的本地化級別來排程task,但是這是不可能的。如果沒有任何未處理的資料在空閒的executor上,那麼spark就會放低本地化級別。這時有兩個選擇:第一,等待,直到executor上的cpu釋放出來,那麼就分配task過去;第二,立即在任意乙個executor上啟動乙個task。

spark缺省會等待一會兒,來期望task要處理的資料所在的節點上的executor空閒出乙個cpu,從而將task分配過去。只要超過了時間,那麼spark就會將task分配到其他任意乙個空閒的executor上。

可以設定引數,spark.locality系列引數,來調節spark等待task可以進行資料本地化的時間。spark.locality.wait(3000毫秒)spark.locality.wait.nodespark.locality.wait.processspark.locality.wait.rack

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

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

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

本地化級別 1.程序本地化 2.節點本地化 3.機架本地化 4.any 都沒有 但是,通常來說,有時候,事與願違,可能task沒有機會分配到它的資料所在的節點,可能那個節點的計算資源和計算能力都滿了,所以,這種時候,通常倆說,spark會等待一段時間,預設情況下是3s 不是絕對的,還有很多情況,對不...

57 Spark效能優化之資料本地化

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