如何通过AutoScaling动态地增加对AWS EMR的ulimit?

问题描述

我有一个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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...