问题描述
我有一个Java上的 Spark应用程序,在AWS EMR上运行。我已根据可用的纱线存储量实施了 AutoScaling策略。对于需要更高内存的作业,EMR最多可将群集最多增加 1 + 8个节点。
工作一段时间后,我不断收到以下错误,该错误会持续几个小时,然后再手动终止群集。
java.io.IOException: All datanodes [DatanodeInfoWithStorage[<i.p>:50010,DS-4e7690c7-5946-49c5-b203-b5166c2ff58d,disK]] are bad. Aborting...
at org.apache.hadoop.hdfs.DataStreamer.handleBadDatanode(DataStreamer.java:1531)
at org.apache.hadoop.hdfs.DataStreamer.setupPipelineForAppendOrRecovery(DataStreamer.java:1465)
at org.apache.hadoop.hdfs.DataStreamer.processDatanodeError(DataStreamer.java:1237)
at org.apache.hadoop.hdfs.DataStreamer.run(DataStreamer.java:657)
此错误是在产生的第一个工作节点中出现的。经过一番挖掘,我发现这可能是由于 ulimit 引起的。现在,可以在任何Linux或EC2计算机上手动轻松地增加 ulimit 。但是我无法获得如何动态地生成的每个EMR集群。
此外,我什至不确定100% ulimit 是否引起此特定问题。这也可能是其他事情。更改 ulimit 并检查后,我才能确认。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)