转自:http://blog.sina.com.cn/s/blog_6d932f2a0101fsyf.html


日志如下

12/12/05 17:06:19 INFO mapred.JobClient: Task Id : attempt_201212051618_0002_m_000035_0, Status : FAILED

Too many fetch-failures

12/12/05 17:06:19 INFO mapred.JobClient: Task Id : attempt_201212051618_0002_m_000021_0, Status : FAILED

Too many fetch-failures

12/12/05 17:06:23 INFO mapred.JobClient:  map 99% reduce 43%

12/12/05 17:06:25 INFO mapred.JobClient: Task Id : attempt_201212051618_0002_m_000038_0, Status : FAILED

Too many fetch-failures

12/12/05 17:06:26 INFO mapred.JobClient: Task Id : attempt_201212051618_0002_m_000030_0, Status : FAILED

Too many fetch-failures

原因:reduce过程的时候取不到map阶段的结果,namenode工作正常,namenode通知datanode进行reduce操作,但是datanode却取不到,说明它没法和其他一部分datanode进行通信。

解决1.检查datanode之间能否互相通信,比如配置防火墙,甚至直接关掉防火墙都可以。

2.完善datanode的主机名映射,因为配置hadoop的时候使用的是主机的名字,因此datanode间要进行通信就需要知道其他datanode的主机名和ip地址的映射。将映射表添加在每一个datanode的/etc/hosts文件中。

注明:网上有说什么把/etc/hosts中的127.0.0.1的主机映射去掉,是行不通的。