在分布式集群環境下,因為程式 bug(包括 hadoop 本身的 bug),負載不均衡或者資
源分布不均等原因,會造成同乙個作業的多個任務之間執行速度不一致,有些任務的執行速
度可能明顯慢於其他任務(比如乙個作業的某個任務進度只有 50%,而其他所有任務已經
執行完畢),則這些任務會拖慢作業的整體執行進度。為了避免這種情況發生,hadoop 採
用了推測執行(speculative execution)機制,它根據一定的法則推測出「拖後腿」的任務,並
為這樣的任務啟動乙個備份任務,讓該任務與原始任務同時處理同乙份資料,並最終選用最
先成功執行完成任務的計算結果作為最終結果。
設定開啟推測執行引數:hadoop 的mapred-site.xml
檔案中進行配置
>
>
mapreduce.map.speculativename
>
>
truevalue
>
property
>
>
>
mapreduce.reduce.speculativename
>
>
truevalue
>
property
>
hive 本身也提供了配置項來控制reduce-side
的推測執行:
hive.mapred.reduce.tasks.speculative.execution<
/name>
<
value
>
true
<
/value
>
<
/property>
關於調優這些推測執行變數,還很難給乙個具體的建議。如果使用者對於執行時的偏差非
常敏感的話,那麼可以將這些功能關閉掉。如果使用者因為輸入資料量很大而需要首席執行官時間
的 map 或者 reduce task 的話,那麼啟動推測執行造成的浪費是非常巨大大。
mapreduce推測執行目前版本的判定準則
目前版本的判定準則 新版本仍然對每個任務至多排程2個執行例項 預設引數設定 但目前的hadoop版本中的推測任務判定 重點關注新啟動的備份任務是否有潛力比當前正在執行的任務完成得更早。如果通過一定的演算法推測某一時刻啟動備份任務,該備份任務肯定會比當前任務完成得晚,那麼啟動該備份任務只會浪費更多的資...
20 mapreduce推測執行機制
1 推測執行機制實際上是hadoop提供的一種針對慢任務的優化方法 當出現慢任務的時候,hadoop會將這個慢任務複製乙份放到其他節點上,兩個節點同時執行相同的任務,誰先執行完,那麼結果就作為最後的結果,另乙個沒有執行完的任務就會被kill掉 2 慢任務出現的場景 任務分配不均勻 機器效能不均等 資...
Hive 推測執行
在分布式集群環境下,因為程式bug 包括hadoop本身的bug 負載不均衡或者資源分布不均等原因,會造成同乙個作業的多個任務之間執行速度不一致,有些任務的執行速度可能明顯慢於其他任務 比如乙個作業的某個任務進度只有50 而其他所有任務已經執行完畢 則這些任務會拖慢作業的整體執行進度。為了避免這種情...