hadoop学习笔记(五) java heap space报错

在执行Hadoop MapReduce任务时遇到Java heap space错误,原因是任务Tracker进程的JVM内存不足。尝试通过增加Datanode的JVM内存未果,转而在MapReduce配置中修改默认设置。在mapred-default中发现默认的最大JVM内存为200M,将其改为512M,并在mapred-site.xml中进行相应的配置更新,以解决内存不足问题。

                  Java    heap   space 报错

实验过程中,执行map过程中,出现task failed,报错为java heap space,原因是jvm的内存太小了,无法达到要求,修改方法一般是改进程序,减小程序消耗的内存,还有就是增大datanodejvm内存。

因为在datanode上使用java -Xmx命令出现无法创建虚拟机的报错(不知道什么原因),所以只能去更改mapred里面的默认设置。

我们可以去mapred-default中看看,发现jvm内存的最大值为200M,现在不够我们将它修改为512m

<property>

  <name>mapred.child.java.opts</name>

  <value>-Xmx200m</value>

  <description>Java opts for the task tracker child processes.  

  The following symbol, if present, will be interpolated: @taskid@ is replaced 

  by current TaskID. Any other occurrences of '@' will go unchanged.

  For example, to enable verbose gc logging to a file named for the taskid in

  /tmp and to set the heap maximum to be a gigabyte, pass a 'value' of:

        -Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc

  

  The configuration variable mapred.child.ulimit can be used to control the

  maximum virtual memory of the child processes. 

  </description>

</property>

然后在mapred-site.xml里面加上

<property>

  <name>mapred.child.java.opts</name>

  <value>-Xmx512m</value>

  <description>Java opts for the task tracker child processes.  

  The following symbol, if present, will be interpolated: @taskid@ is replaced 

  by current TaskID. Any other occurrences of '@' will go unchanged.

  For example, to enable verbose gc logging to a file named for the taskid in

  /tmp and to set the heap maximum to be a gigabyte, pass a 'value' of:

        -Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc

  

  The configuration variable mapred.child.ulimit can be used to control the

  maximum virtual memory of the child processes. 

  </description>

</property>

即可。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值