解决Hadoop运行jar包时MapReduce任务启动前OutOfMemoryError:Java heap space问题

来源:互联网 发布:mysql update语句 编辑:程序博客网 时间:2024/05/06 22:58

最近在研究Mahout开源代码时尝试利用MapReduce加载本地训练好的机器学习模型至集群并进行分布式预测,整个程序通过Hadoop jar XXXX.jar来执行,

期间由于需要在本地进行模型训练同时训练数据集条目较多模型规模比较大,导致在本地训练模型时JAVA报错:java.error.OutOfMemoryError:Java heap space

遇到问题后尝试通过Idea14的前端配置页面进行配置,无效;尝试在shell中添加-Xmx配置参数,无效;尝试在jdk中更改-Xmx参数,同样无效。

最终在http://bbs.csdn.net/topics/390922318 中找到ID为ramontop1的大神的正确解决方案:

前往hadoop安装目录下的hadoop-env.sh,我的Mac的相应目录路径为$~/hadoop-2.6.1/etc/hadoop/hadoop-env.sh

vi后找到如下的参数配置并添加-Xmx配置:

# Extra Java runtime options.  Empty by default.export HADOOP_OPTS="$HADOOP_OPTS -Xmx1024m -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk"

之前ramontop1在帖中修改的是:

# The following applies to multiple commands (fs, dfs, fsck, distcp etc)export HADOOP_CLIENT_OPTS="-Xmx1024m $HADOOP_CLIENT_OPTS"#HADOOP_JAVA_PLATFORM_OPTS="-XX:-UsePerfData $HADOOP_JAVA_PLATFORM_OPTS"
我并不确定这两块哪一个会实际影响到Hadoop jar命令的执行,因此在两处都进行了配置,由-Xmx512m改为-Xmx1024m,wq后OutOfMemoryError问题解决。




0 0
原创粉丝点击