无法从 spark-submit 分配内存错误到 AWS EMR give
Posted
技术标签:
【中文标题】无法从 spark-submit 分配内存错误到 AWS EMR give【英文标题】:Cannot allocate memory error from spark-submit to AWS EMR give 【发布时间】:2019-12-20 05:44:08 【问题描述】:我通过 Apache Livy 连续向运行 YARN 的 EMR 集群发布十个 spark-submit 请求,但 spark 在第 7 次提交时出现以下错误,之后所有提交:
"java.io.IOException: 无法运行程序 \"/usr/lib/spark/bin/spark-submit\": error=12, 无法分配内存"
有什么办法可以让 spark-submit 进入队列,只有在获得资源后才会执行,并且我的工作不会失败。
【问题讨论】:
在 EMR 上启用 ganglia 并观察主节点中的空闲内存(livy 正在运行);当节点内存超过 90% 时会发生这种情况吗? --然后这是 livy 问题 --在这种情况下,尝试分隔 livy 提交的空间,以便您在 5 秒内提交的文件不超过 1 或 2;看看这是否有帮助 【参考方案1】:“Java 运行时环境没有足够的内存来继续”。此警告表示主节点上可用于运行 Java 环境的内存不足。如果主节点的内存负载过重,这种行为很常见,这会使其他使用内存的进程饿死。
为了解决此问题,建议启动具有更高实例类型的 EMR 集群,以根据集群的要求利用更多内存。
【讨论】:
以上是关于无法从 spark-submit 分配内存错误到 AWS EMR give的主要内容,如果未能解决你的问题,请参考以下文章
连续上传导致 QNetworkReply 错误“无法分配内存”
num-executors可以覆盖spark-submit中的动态分配
如何从 spark-shell/spark-submit 运行交互式 Spark 应用程序