Hadoop作业JVM堆优化汇总及JVM复用

查看数: 55127 | 评论数: 7 | 收藏 3
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-4-27 20:49

正文摘要:

本帖最后由 pig2 于 2014-4-27 20:59 编辑 问题导读: 1.mapred.child.java.opts是用来做什么的? 2.如何让mapred.child.java.opts的值不能随便修改? 3.通过什么参数可以配置作业的Map和Reduce阶段的heap的大 ...

回复

fullmooner 发表于 2016-7-15 10:21:05
分析的特别深入,学习了
chief 发表于 2015-6-25 11:54:33
多谢楼主了
pig2 发表于 2015-4-1 20:04:52
daizj  与本站网友私信公布出来
  1. 请教一下,我跑一下hive查询,报如下内存溢出
  2. hive> select * from t_ba_cf_olap_base_info where ds=20150322 limit 1;
  3. OK
  4. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
  5. SLF4J: Defaulting to no-operation (NOP) logger implementation
  6. SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
  7. Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
  8. 只需要配置mapred.child.java.opts参数就行吗?
复制代码
me:每个错误都有自己的环境,可以尝试文章的方法


daizj  
  1. <property>
  2.     <name>mapred.child.java.opts</name>
  3.     <value>-Xmx4096m</value>
  4. </property>
  5. <property>
  6.     <name>mapred.map.child.java.opts</name>
  7.     <value>-Xmx4096m</value>
  8. </property>
  9. <property>
  10.     <name>mapred.reduce.child.java.opts</name>
  11.     <value>-Xmx4096m</value>
  12. </property>
  13. 谢谢。我加上了这三个配置都没有效果。
复制代码

me:是否生效,多进行尝试,如还不能解决。可发帖,把问题描述清楚






daizj  


谢谢,问题已解决,是hive客户端配置的堆内存默认只有256M太小,调大后就正常了




























hua0704 发表于 2015-3-29 00:13:17
zxy67648875 发表于 2014-5-15 13:29:58
好 帖子 mark 一下
perfri 发表于 2014-4-29 09:49:54
赞一个,支持一下
howtodown 发表于 2014-4-28 17:29:30
上面没有说明如何重用JVM,这里补充一下:
可以通过任务Java虚拟机(JVM)重用来解决这个问题,默认每JVM只运行一个任务,使用JVM重用后一个JVM可以顺序执行多个任务,减少了启动时间。控制JVM的属性是mapred.job.reuse.jvm.num.tasks,它指定作业每个JVM运行的任务的最大数量,默认为1。可以通过JonConf的setNumTasksToExecutePerJvm()方法设置,若设置为-1则说明统一作业中共享一个JVM任务的数量不受限制。
关闭

推荐上一条 /2 下一条