Hadoop MapReduce容错性分析

来源:互联网 发布:linux怎么查看系统版本 编辑:程序博客网 时间:2024/05/22 10:38


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/


0 0