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

Hive發表於2017-04-25

資料本地化目的,只移動計算,不移動資料,避免網路資源浪費。

1.首先了解Application任務執行流程:

• 在Spark Application提交後,Driver會根據action運算元劃分成一個個的job,然後對每一 個job劃分成一個個的stage,stage內部實際上是由一系列平行計算的task組成的,然後 以TaskSet的形式提交給你TaskScheduler,TaskScheduler在進行分配之前都會計算出每一個task最優計算位置。Spark的task的分配演算法優先將task釋出到資料所在的節點上,從而達到資料最優計算位置。

enter image description here

2. – 資料本地化五種級別

• PROCESS_LOCAL 程式本地化 • NODE_LOCA 節點本地化 • NO_PREF 沒有本地化 • RACK_LOCAL 機架本地化(叢集內) • ANY 跨機架本地化 具體介紹如下圖: enter image description here 3.Spark的task的具體分配演算法 enter image description here 4. 資料本地性調優

– 配置引數 • spark.locality.wait driver端等待executor執行task 3s • spark.locality.wait.process 等待程式本地化的時間,預設和 spark.locality.wait相等 • spark.locality.wait.node
• spark.locality.wait.rack

  • 如何設定引數:

new SparkConf().set(“spark.locality.wait ”,”6s”);

  • 通過比較task執行時間來確定最優引數;

檢視資料本地化執行的方法:

1.檢視Console 列印的日誌--推薦

2.通過Driver的WEB UI檢視 埠:4040

相關文章