Hadoop MapReduce容錯性分析


1. JobTracker

暫無容錯機制,掛掉之後,需要人工介入,重啓。

用戶可以通過配置一些參數,以便JobTracker重啓後,讓所有作業恢復運行。用戶配置若干參數後,JobTracker重啓前,會在history log中記錄各個作業的運行狀態,這樣在JobTracker關閉後,系統中所有數據目錄(包括各種臨時目錄)均會被保留,待JobTracker重啓之後,JobTracker自動重新提交這些作業,並只對未運行完成的task進行重新調度,這樣可避免已經計算完的task重新計算。具體配置方法可參考:http://www.cnblogs.com/MGGOON/archive/2012/02/23/2365055.html

有人提出,TaskTracker重啓後,它上面的作業也可以自動恢復,具體參考:

https://issues.apache.org/jira/browse/MAPREDUCE-2171

2. TaskTracker

(1)彙報心跳

mapred.tasktracker.expiry.interval,默認值是10min

當TaskTracker超過mapred.tasktracker.expiry.interval時間間隔沒有向JobTracker彙報心跳,則JobTracker視之爲死亡,並將之從調度池中剔除。

(2)Exclude nodes

用戶可以在mapred.hosts.exclude或者mapred.hosts中指定一個文件,該文件一行是一個tasktracker host,表示這些節點不允許接入集羣,也就是不會被分配task。該文件在Hadoop-0.21.0版本中可以動態加載。

(3)黑名單(blacklist)

health-check script腳本判斷該節點是健康,不健康,直接加入黑名單。

具體參考: http://hadoop.apache.org/common/docs/current/cluster_setup.html 中的“Configuring the Node Health Check Script”一節。

(4)灰名單(graylist)

採用了啓發式算法發現的有問題的節點,加入灰名單。

mapred.jobtracker.blacklist.fault-timeout-window:默認是3小時,時間窗口,計算該時間內失敗的task個數

如果滿足以下條件,則將tasktracker加入灰名單:

mapred.max.tracker.blacklists:默認是4,bad tasktracker閾值,當一個tasktracker在時間窗口內失敗個數超過該閾值,則認爲該tasktracker是bad tasktracker

mapred.cluster.average.blacklist.threshold,默認是0.5,如果一個bad tasktracker失敗的task個數超過了所有tasktracker平均值的mapred.cluster.average.blacklist.threshold倍,則加入灰名單,不僅會自動加入黑名單。

重新啓動該TaskTracker,就能夠將它從黑名單和灰名單中刪除。

3. Job

mapred.max.tracker.failures:一個作業在某個tasktracker上失敗的task個數超過該值,則該tasktracker被加到該job的blacklist中,從此不再往該tasktracker分配該job的task.

4. Task

mapred.map.max.attempts:每個map task最大嘗試次數

mapred.reduce.max.attempts:每個reduce task最大嘗試次數

5. Record

mapred.skip.map.max.skip.records:跳過壞記錄條數(數據格式不對,空紀錄等)。當遇到壞記錄時,Hadoop嘗試跳過的最多記錄條數。

6. 磁盤

用戶可以配在mapred.local.dir參數配置多個磁盤目錄,將map task中間結果分不到不同磁盤上,增強容錯性。Map task臨時結果將被輪詢寫到這些目錄中,以避免某個磁盤目錄數據過多。(輪詢的方式仍然可能導致某個磁盤目錄數據過多,最好的策略是每次選擇數據最少的磁盤目錄寫入,採用小頂堆)。

用戶日誌userlogs可被分佈不到不同磁盤目錄中,減少單個磁盤日誌寫入壓力。

具體參考:https://issues.apache.org/jira/browse/MAPREDUCE-2657


轉載自董的博客

本文鏈接地址: http://dongxicheng.org/mapreduce/hadoop-mapreduce-failure-tolerance/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章