现象:
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的主机映射去掉,是行不通的。