mapreduce.job.jvm.numtasks<
/name>
10<
/value>
how many tasks to run per jvm. if set to -
1, there is
no limit.
<
/description>
<
/property>
我們也可以在hive當中通過
set mapred.job.reuse.jvm.num.tasks=
10;
這個設定來設定我們的jvm重用
這個功能的缺點是,開啟jvm重用將一直占用使用到的task插槽,以便進行重用,直到任務完成後才能釋放。如果某個「不平衡的」job中有某幾個reduce task執行的時間要比其他reduce task消耗的時間多的多的話,那麼保留的插槽就會一直空閒著卻無法被其他的job使用,直到所有的task都結束了才會釋放。
mapreduce.map.speculative<
/name>
true
<
/value>
if true
, then multiple instances of some map tasks
may be executed in parallel.
<
/property>
mapreduce.reduce.speculative<
/name>
true
<
/value>
if true
, then multiple instances of some reduce tasks
may be executed in parallel.
<
/property>
不過hive本身也提供了配置項來控制reduce-side的推測執行:
hive.mapred.reduce.tasks.speculative.execution<
/name>
true
<
/value>
whether speculative execution for reducers should be turned on.
<
/description>
<
/property>
關於調優這些推測執行變數,還很難給乙個具體的建議。如果使用者對於執行時的偏差非常敏感的話,那麼可以將這些功能關閉掉。如果使用者因為輸入資料量很大而需要首席執行官時間的map或者reduce task的話,那麼啟動推測執行造成的浪費是非常巨大大。 Hive 推測執行
在分布式集群環境下,因為程式bug 包括hadoop本身的bug 負載不均衡或者資源分布不均等原因,會造成同乙個作業的多個任務之間執行速度不一致,有些任務的執行速度可能明顯慢於其他任務 比如乙個作業的某個任務進度只有50 而其他所有任務已經執行完畢 則這些任務會拖慢作業的整體執行進度。為了避免這種情...
spark推測執行 填坑
1 spark推測執行開啟 設定 spark.speculation true即可 額外設定 1.spark.speculation interval 100 檢測週期,單位毫秒 2.spark.speculation quantile 0.75 完成task的百分比時啟動推測 3.spark.sp...
Hive 優化之 推測執行
mapreduce將作業分解成多個任務並行執行的機制,決定了作業執行的總體時間對執行緩慢的任務比較敏感。為了盡量避免執行緩慢的任務對作業執行時間 託後腿 的情況,需要啟動作業的推測執行。在分布式集群環境下,因為程式bug 包括hadoop本身的bug 負載不均衡或者資源分布不均等原因,會造成同乙個作...