hadoop recovery

1. JobTracker

    暫無容錯機制,掛掉以後,須要人工介入,重啓。 node

    用戶能夠經過配置一些參數,以便JobTracker重啓後,讓全部做業恢復運行。用戶配置若干參數後,JobTracker重啓前,會在history log中記錄各個做業的運行狀態,這樣在JobTracker關閉後,系統中全部數據目錄(包括各類臨時目錄)均會被保留,待JobTracker重啓以後,JobTracker自動從新提交這些做業,並只對未運行完成的task進行從新調度,這樣可避免已經計算完的task從新計算。 算法

配置項
默認值 描述
mapred.jobtracker.restart.recover
false
true時jobtracker重啓以前運行的job能夠在jobtracker restart以後恢復,false則須要從新運行。
mapred.jobtracker.job.history.block.size
3145728
保存Job歷史日誌文件的大小,job的恢復就是使用這些歷史日誌。
hadoop.job.history.location
${hadoop.log.dir}/history
Job history存儲位置

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腳本判斷該節點是健康,不健康,直接加入黑名單。

        (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可被分佈不到不一樣磁盤目錄中,減小單個磁盤日誌寫入壓力。
oop

相關文章
相關標籤/搜索