我正在尝试在 Amazon EMR 集群(m3.2xLarge,10 个核心节点)中的由约 2.5 亿对(行)组成的输入上运行 mahout 项目相似性作业。我在运行时遇到 Java 堆大小错误相似的工作。
我尝试过解决此问题的方法。
通过在引导操作中定义名称节点来增加名称节点的堆大小。就像这样 -
--bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-daemons --args --namenode-heap-size=8192使用 AWS 推荐的内存密集型 Bootstrap (s3://elasticmapreduce/bootstrap-actions/configurations/latest/memory-intense)
手动设置MAHOUT_HEAPSIZE。
问题没有解决,有什么办法解决吗?
最佳答案
很少需要更改 EMR 上的默认 namenode 守护进程堆大小,更可能的是需要调整的容器/任务 jvm ( http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/TaskConfiguration_H2.html )。
在进行进一步更改之前,您需要确定哪个进程实际上遇到了堆错误,然后进行相应的调整。
如果它确实是容器/任务 jvm 堆,那么可以使用configure-hadoop ( http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html#PredefinedbootstrapActions_ConfigureHadoop ) 进行调整。
同时删除内存密集型引导操作,它仅适用于 AMI 1.x。
关于在 Amazon EMR 上运行 mahout 项目相似性作业时发生 Java 堆空间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27796205/