在 Amazon EMR 上运行 mahout 项目相似性作业时发生 Java 堆空间错误

标签 java mahout amazon-emr mahout-recommender

我正在尝试在 Amazon EMR 集群(m3.2xLarge,10 个核心节点)中的由约 2.5 亿对(行)组成的输入上运行 mahout 项目相似性作业。我在运行时遇到 Java 堆大小错误相似的工作。

我尝试过解决此问题的方法。

  1. 通过在引导操作中定义名称节点来增加名称节点的堆大小。就像这样 -
    --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-daemons --args --namenode-heap-size=8192

  2. 使用 AWS 推荐的内存密集型 Bootstrap (s3://elasticmapreduce/bootstrap-actions/configurations/latest/memory-intense)

  3. 手动设置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/

相关文章:

java - 以编程方式访问在 Logback 中定义的属性

hadoop - Mahout CPU在群集中的利用率

amazon-web-services - AWS CLI EMR 获取主节点实例 ID 并对其进行标记

hadoop - 如何在 aws emr 中将 ec2-user 添加到 hadoop

hadoop - EMRFS 是否使 S3 对外部客户端保持一致

java - 如何从 Android 中的匿名类中引用接口(interface)?

java - 输入后显示输出

java - 域模式下jboss中的虚拟部署目录

java - 设置 Apache Mahout 以使用 MySql

hadoop - 我如何使用 apache mahout 实现 LDA?