在Google的MapReduce文件中,他們有一個備份任務,我認爲這與Hadoop中的推測任務是一回事。投機任務如何實施?當我開始一項推測性任務時,任務是從開始的時候開始的,是從較早的任務開始,還是從較早的任務開始(如果是,是否必須複製所有中間狀態和數據?)Hadoop推測性任務執行
回答
Hadoop系統的一個問題是,通過將任務分配到多個節點,可能會有一些慢節點對程序的其餘部分進行速率限制。
任務可能是出於各種原因,包括硬件降解,或軟件錯誤配置慢,但原因可能很難檢測,因爲任務依然成功完成,雖然比預期更長的時間之後。 Hadoop不會嘗試診斷和修復運行緩慢的任務;相反,它會嘗試檢測任務的運行速度是否比預期慢,並啓動另一個等效的任務作爲備份。這被稱爲任務的推測性執行。
例如,如果一個節點具有一個較慢的磁盤控制器,那麼它可以是隻有10%的讀出其輸入端的所有其他節點的速度。因此,當99個地圖任務已經完成時,系統仍在等待最終地圖任務檢入,這比所有其他節點花費的時間要長得多。
通過強制任務從彼此孤立運行,各個任務不知道他們的投入從何而來。任務信任Hadoop平臺只提供適當的輸入。因此,同一輸入可以並行處理多次,以利用機器能力的差異。隨着作業中的大部分任務即將結束,Hadoop平臺將爲剩餘的任務安排多個節點的冗餘副本,這些副本不需要其他工作來執行。這個過程被稱爲投機執行。任務完成後,他們會向JobTracker公佈這一事實。無論任務的任何副本首先完成成爲最終副本。如果其他副本是推測性執行的,則Hadoop會通知TaskTracker放棄這些任務並放棄其輸出。然後,減速器首先從任何Mapper成功完成的輸入中接收輸入。
默認情況下啓用推測性執行。您可以通過mapred.map.tasks.speculative.execution
和mapred.reduce.tasks.speculative.execution
JobConf選項設置爲false,分別使用舊的API,而較新的API,你可以考慮改變mapreduce.map.speculative
和mapreduce.reduce.speculative
禁用映射器和減壓器推測執行。
因此,要回答你的問題它並重新開始,並沒有任何與多少其他任務做/完成。
相信'mapreduce.map.speculative'和'mapreduce.reduce.speculative'是較新的等同'mapred.map.tasks.speculative.execution'和'mapred.reduce.tasks.speculative.execution',分別。 – 2013-03-01 19:36:32
- 1. 在任務並行庫:如何推遲Task.TaskFactory.FromAsync任務執行?
- 2. Hadoop推薦素數的map/reduce任務?
- 3. 有沒有辦法在Hadoop中配置推測執行超時?
- 4. GAE強制推送任務隊列執行下一個任務
- 5. Haskell推測並行執行
- 6. 芹菜週期性任務沒有得到執行任務.py
- 7. AsyncTask無法執行任務:任務已執行
- 8. Hadoop,正在運行的任務
- 9. 在Apache Marathon上運行Hadoop/Storm任務
- 10. Gradle任務配置與任務執行
- 11. 任務繼續執行多個任務
- 12. 春任務執行計劃任務
- 13. 如何推遲在龍捲風中執行python任務?
- 14. RxJava 2入門:連續執行任務。 `然後'或'推遲'?
- 15. Appengine推遲任務的問題,執行引發未知錯誤
- 16. GAE任務和執行率
- 17. 如何執行gradle任務
- 18. MSBuild任務無聲執行
- 19. CruiseControl.NET可執行任務
- 20. Asynk任務不執行doinBackground
- 21. Grails按需執行任務
- 22. 任務隊列執行
- 23. Maven Antrun不執行任務
- 24. Bookmarklet執行多個任務
- 25. ANR執行異步任務
- 26. 執行任務蟒蛇
- 27. gulp多次執行任務
- 28. 自動執行Eclipse任務
- 29. 執行SQL任務錯誤 -
- 30. JBPM多次執行任務
添加到這個問題,什麼將是上榜理由,如果你要在系統範圍的級別完全禁用投機任務執行?當投機執行被禁用時,取得了什麼好處。 – 2013-06-30 20:12:26