通過強迫任務獨立運行於其它的任務,使得單個任務之間不會知道它們的輸入數據來自哪裏。任務相信Hadoop平臺會派送合適的輸入到它們那裏。因此,對於相同的輸入數據,我們可以並行多次處理以利用不同機器的負載能力。因爲作業中大多數的任務都已經完成了,Hadoop平臺會在幾個空閒的節點上調度執行剩餘任務的拷貝,這個過程叫做推測性的執行。當任務完成時,它會向JobTracker通告。任何一個首先完成的拷貝任務將成爲權威拷貝,如果其他拷貝任務還在推測性的執行中,Hadoop會告訴TaskTracker去終止這些任務並丟棄它們的輸出,接着Reducer會從首先完成的Mapper那裏獲取輸入數據。
推測性的執行默認是啓用的,你可以通過設置JobConf中以下參數爲false來禁用mapper和reducer的推測性的執行。
mapred.map.tasks.speculative.execution
mapred.reduce.tasks.speculative.execution
來源:http://www.cnblogs.com/spork/archive/2010/01/11/1644350.html