我使用的是hadoop2.3.0版本。有时当我执行map reduce作业时,会显示以下错误。
14/08/10 12:14:59 INFO mapreduce.Job: Task Id : attempt_1407694955806_0002_m_000780_0, Status : FAILED
Error: java.io.IOException: All datanodes 192.168.30.2:50010 are bad. Aborting...
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.setupPipelineForAppendOrRecovery(DFSOutputStream.java:1023)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.processDatanodeError(DFSOutputStream.java:838)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:483)
当我尝试检查这些失败任务的日志文件时,此任务的日志文件夹将为空。
我无法理解这个错误背后的原因。有人能告诉我怎么解决这个问题吗。谢谢你的帮助。
2条答案
按热度按时间gpfsuwkq1#
设置
spark.shuffle.service.enabled
至true
为我解决了这个问题。spark.dynamicAllocation.enabled
允许spark将执行器动态分配给不同的任务。这个spark.shuffle.service.enabled
当设置为false
禁用外部洗牌服务,数据仅存储在执行器上。当重新分配执行者时,数据丢失,异常java.io.ioexception:所有数据节点都不正确。
为数据请求引发。
swvgeqrz2#
您似乎达到了用户的打开文件句柄限制。这是一个非常常见的问题,在大多数情况下可以通过增加ulimit值来解决(默认情况下,ulimit值大多为1024,很容易被像您这样的多输出作业耗尽)。
您可以按照以下简短指南来增加:http://blog.cloudera.com/blog/2009/03/configuration-parameters-what-can-you-just-ignore/ [部分“文件描述符限制”]
回答严厉的j-https://groups.google.com/a/cloudera.org/forum/#!主题/cdh用户/KJRUKVXMFWW