Hadoop MapReduce容错性分析
1. JobTracker
暫無容錯(cuò)機(jī)制,掛掉之后,需要人工介入,重啟。
用戶可以通過配置一些參數(shù),以便JobTracker重啟后,讓所有作業(yè)恢復(fù)運(yùn)行。用戶配置若干參數(shù)后,JobTracker重啟前,會(huì)在history log中記錄各個(gè)作業(yè)的運(yùn)行狀態(tài),這樣在JobTracker關(guān)閉后,系統(tǒng)中所有數(shù)據(jù)目錄(包括各種臨時(shí)目錄)均會(huì)被保留,待JobTracker重啟之后,JobTracker自動(dòng)重新提交這些作業(yè),并只對(duì)未運(yùn)行完成的task進(jìn)行重新調(diào)度,這樣可避免已經(jīng)計(jì)算完的task重新計(jì)算。具體配置方法可參考:http://www.cnblogs.com/MGGOON/archive/2012/02/23/2365055.html
有人提出,TaskTracker重啟后,它上面的作業(yè)也可以自動(dòng)恢復(fù),具體參考:
https://issues.apache.org/jira/browse/MAPREDUCE-2171
2. TaskTracker
(1)匯報(bào)心跳
mapred.tasktracker.expiry.interval,默認(rèn)值是10min
當(dāng)TaskTracker超過mapred.tasktracker.expiry.interval時(shí)間間隔沒有向JobTracker匯報(bào)心跳,則JobTracker視之為死亡,并將之從調(diào)度池中剔除。
(2)Exclude nodes
用戶可以在mapred.hosts.exclude或者mapred.hosts中指定一個(gè)文件,該文件一行是一個(gè)tasktracker host,表示這些節(jié)點(diǎn)不允許接入集群,也就是不會(huì)被分配task。該文件在Hadoop-0.21.0版本中可以動(dòng)態(tài)加載。
(3)黑名單(blacklist)
health-check script腳本判斷該節(jié)點(diǎn)是健康,不健康,直接加入黑名單。
具體參考:?http://hadoop.apache.org/common/docs/current/cluster_setup.html?中的“Configuring the Node Health Check Script”一節(jié)。
(4)灰名單(graylist)
采用了啟發(fā)式算法發(fā)現(xiàn)的有問題的節(jié)點(diǎn),加入灰名單。
mapred.jobtracker.blacklist.fault-timeout-window:默認(rèn)是3小時(shí),時(shí)間窗口,計(jì)算該時(shí)間內(nèi)失敗的task個(gè)數(shù)
如果滿足以下條件,則將tasktracker加入灰名單:
mapred.max.tracker.blacklists:默認(rèn)是4,bad tasktracker閾值,當(dāng)一個(gè)tasktracker在時(shí)間窗口內(nèi)失敗個(gè)數(shù)超過該閾值,則認(rèn)為該tasktracker是bad tasktracker
mapred.cluster.average.blacklist.threshold,默認(rèn)是0.5,如果一個(gè)bad tasktracker失敗的task個(gè)數(shù)超過了所有tasktracker平均值的mapred.cluster.average.blacklist.threshold倍,則加入灰名單,不僅會(huì)自動(dòng)加入黑名單。
重新啟動(dòng)該TaskTracker,就能夠?qū)⑺鼜暮诿麊魏突颐麊沃袆h除。
3. Job
mapred.max.tracker.failures:一個(gè)作業(yè)在某個(gè)tasktracker上失敗的task個(gè)數(shù)超過該值,則該tasktracker被加到該job的blacklist中,從此不再往該tasktracker分配該job的task.
4. Task
mapred.map.max.attempts:每個(gè)map task最大嘗試次數(shù)
mapred.reduce.max.attempts:每個(gè)reduce task最大嘗試次數(shù)
5. Record
mapred.skip.map.max.skip.records:跳過壞記錄條數(shù)(數(shù)據(jù)格式不對(duì),空紀(jì)錄等)。當(dāng)遇到壞記錄時(shí),Hadoop嘗試跳過的最多記錄條數(shù)。
6. 磁盤
用戶可以配在mapred.local.dir參數(shù)配置多個(gè)磁盤目錄,將map task中間結(jié)果分不到不同磁盤上,增強(qiáng)容錯(cuò)性。Map task臨時(shí)結(jié)果將被輪詢寫到這些目錄中,以避免某個(gè)磁盤目錄數(shù)據(jù)過多。(輪詢的方式仍然可能導(dǎo)致某個(gè)磁盤目錄數(shù)據(jù)過多,最好的策略是每次選擇數(shù)據(jù)最少的磁盤目錄寫入,采用小頂堆)。
用戶日志userlogs可被分布不到不同磁盤目錄中,減少單個(gè)磁盤日志寫入壓力。
具體參考:https://issues.apache.org/jira/browse/MAPREDUCE-2657
原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明:?轉(zhuǎn)載自董的博客
本文鏈接地址:?http://dongxicheng.org/mapreduce/hadoop-mapreduce-failure-tolerance/
總結(jié)
以上是生活随笔為你收集整理的Hadoop MapReduce容错性分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: YARN/MRv2 Resource M
- 下一篇: 开源日志系统比较