Spark優化——推測執行機制

Spark job中,一個stage什麼時候完成,取決於stage下最後一個task的完成時間。

task的完成時間也被很多因素影響,比如partition的分配,executor的資源使用情況,host的運行狀態,集羣網絡等等。很多情況下因爲運行環境導致的task跑的過慢,或者直接卡死,讓task可以重新跑起來是可以緩解這個問題的,也就是Spark中的推測執行機制(speculation)。

--conf spark.speculation=true
--conf spark.speculation.interval=100
--conf spark.speculation.quantile=0.9
--conf spark.speculation.multiplier=1.5

1. 當spark.speculation設置爲true時,就會對task開啓推測執行,也就是在一個stage下跑的慢的tasks有機會重新啓動;

2. spark.speculation.interval,100ms,Spark檢測tasks推測機制的間隔時間;

3. spark.speculation.quantile,0.9,當一個stage下多少百分比的tasks運行完畢後纔開啓推測執行機制,0.9即90%的任務都運行完畢後開啓推測執行;

4. spark.speculation.multiplier,1.5,一個task的運行時間是所有task的運行時間中位數的幾倍時,纔會被認爲該task需要重新啓動。

當啓動了推測執行後,spark會獲取先完成的task結果並且將task標記爲完成,所以也不會出現數據衝突和重複。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章