在分布式集群環境下,因為程式bug(包括hadoop本身的bug),負載不均衡或者資源分布不均等原因,會造成同乙個作業的多個任務之間執行速度不一致,有些任務的執行速度可能明顯慢於其他任務(比如乙個作業的某個任務進度只有50%,而其他所有任務已經執行完畢),則這些任務會拖慢作業的整體執行進度。為了避免這種情況發生,hadoop採用了推測執行(speculative execution)機制,它根據一定的法則推測出「拖後腿」的任務,並為這樣的任務啟動乙個備份任務,讓該任務與原始任務同時處理同乙份資料,並最終選用最先成功執行完成任務的計算結果作為最終結果。
設定開啟推測執行引數:hadoop的mapred-site.xml檔案中進行配置
>
>
mapreduce.map.speculativename
>
>
truevalue
>
>
if true, then multiple instances of some map tasks
may be executed in parallel.description
>
property
>
>
>
mapreduce.reduce.speculativename
>
>
truevalue
>
>
if true, then multiple instances of some reduce tasks
may be executed in parallel.description
>
property
>
不過hive本身也提供了配置項來控制reduce-side的推測執行:
>
>
hive.mapred.reduce.tasks.speculative.executionname
>
>
truevalue
>
>
whether speculative execution for reducers should be turned on. description
>
property
>
關於調優這些推測執行變數,還很難給乙個具體的建議。如果使用者對於執行時的偏差非常敏感的話,那麼可以將這些功能關閉掉。如果使用者因為輸入資料量很大而需要首席執行官時間的map或者reduce task的話,那麼啟動推測執行造成的浪費是非常巨大大。 第九章 Hive企業級優化之並行執行
hive會將乙個查詢轉化成乙個或者多個階段。這樣的階段可以是mapreduce階段 抽樣階段 合併階段 limit階段。或者hive執行過程中可能需要的其他階段。預設情況下,hive一次只會執行乙個階段。不過,某個特定的job可能包含眾多的階段,而這些階段可能並非完全互相依賴的,也就是說有些階段是可...
第九章 Hive企業級調優之動態分割槽調整
關係型資料庫中,對分割槽表insert資料時候,資料庫自動會根據分割槽欄位的值,將資料插入到相應的分割槽中,hive中也提供了類似的機制,即動態分割槽 dynamic partition 只不過,使用hive的動態分割槽,需要進行相應的配置。1 開啟動態分割槽引數設定 1 開啟動態分割槽功能 預設t...
Docker第九章 企業級私有倉庫Harbor
sudo curl l s uname m o usr local bin docker compose2 給compose二進位制賦予可執行許可權 chmod x usr local bin docker compose1 解壓harbor tar zxvf harbor offline inst...