Hive 優化之 推測執行

2021-10-23 19:07:19 字數 1347 閱讀 4014

mapreduce將作業分解成多個任務並行執行的機制,決定了作業執行的總體時間對執行緩慢的任務比較敏感。為了盡量避免執行緩慢的任務對作業執行時間「託後腿」的情況,需要啟動作業的推測執行。

在分布式集群環境下,因為程式bug(包括hadoop本身的bug),負載不均衡或者資源分布不均等原因,會造成同乙個作業的多個任務之間執行速度不一致,有些任務的執行速度可能明顯慢於其他任務(比如乙個作業的某個任務進度只有50%,而其他所有任務已經執行完畢),則這些任務會拖慢作業的整體執行進度。為了避免這種情況發生,hadoop採用了推測執行(speculative execution)機制,它根據一定的法則推測出「拖後腿」的任務,並為這樣的任務啟動乙個備份任務,讓該任務與原始任務同時處理同乙份資料,並最終選用最先成功執行完成任務的計算結果作為最終結果。

設定開啟推測執行引數:hadoop的mapred-site.xml檔案中進行配置

mapreduce.map.speculative<

/name>

<

value

>

true

<

/value

>

如果任務執行較慢,決定是否執行相應map任務的推測執行<

/description>

<

/property>

mapreduce.reduce.speculative<

/name>

<

value

>

true

<

/value

>

如果任務執行較慢,決定是否執行相應reduce任務的推測執行<

/description>

<

/property>

hive本身也提供了配置項來控制reduce-side的推測執行

hive.mapred.reduce.tasks.speculative.execution<

/name>

<

value

>

true

<

/value

>

whether speculative execution for reducers

should be turned on

.<

/description>

<

/property>

關於調優這些推測執行變數,還很難給乙個具體的建議。如果使用者對於執行時的偏差非常敏感的話,那麼可以將這些功能關閉掉。如果使用者因為輸入資料量很大而需要首席執行官時間的map或者reduce task的話,那麼啟動推測執行造成的浪費是非常巨大。

MapReduce的推測執行(Hive優化)

在分布式集群環境下,因為程式 bug 包括 hadoop 本身的 bug 負載不均衡或者資 源分布不均等原因,會造成同乙個作業的多個任務之間執行速度不一致,有些任務的執行速 度可能明顯慢於其他任務 比如乙個作業的某個任務進度只有 50 而其他所有任務已經 執行完畢 則這些任務會拖慢作業的整體執行進度...

Hive 推測執行

在分布式集群環境下,因為程式bug 包括hadoop本身的bug 負載不均衡或者資源分布不均等原因,會造成同乙個作業的多個任務之間執行速度不一致,有些任務的執行速度可能明顯慢於其他任務 比如乙個作業的某個任務進度只有50 而其他所有任務已經執行完畢 則這些任務會拖慢作業的整體執行進度。為了避免這種情...

第九章 Hive企業級優化之推測執行

在分布式集群環境下,因為程式bug 包括hadoop本身的bug 負載不均衡或者資源分布不均等原因,會造成同乙個作業的多個任務之間執行速度不一致,有些任務的執行速度可能明顯慢於其他任務 比如乙個作業的某個任務進度只有50 而其他所有任務已經執行完畢 則這些任務會拖慢作業的整體執行進度。為了避免這種情...