Hadoop ”No room for reduce task“问题处理
早上发现一个任务有20个reduce,但是只有四个正常完成,剩余16个等待了8个小时才分配执行(集群槽位资源充足)
解决方法:查看了集群的log,发现有这种warn:
2013-09-11 01:56:38,620 WARN org.apache.hadoop.mapred.JobInProgress: No room for reduce task. Node tracker_s lave028.hadoop.sjs.org:localhost/127.0.0.1:54676 has 91520086016 bytes free; but we expect red uce input to take 107851739205
这个是指hadoop在分配reduce任务的时候,会先遍历一下集群所有机器的磁盘空间,如果中间结果的数据量大于磁盘剩余空间,
就会出现no room。例如上面的磁盘空间剩余为90G,但reduce有107G的input,所以一直无法分配执行。