`

hadoop的mapreduce作业中经常出现Java heap space解决方案

    博客分类:
  • Hive
 
阅读更多

我在进行两个大表的join时,任务显示成功,但Hadoop出现以下异常:

报出错误如下:

 java.lang.RuntimeException:java.lang.reflect.InvocationTargetException

      at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:81)

      at org.apache.hadoop.io.WritableUtils.clone(WritableUtils.java:231)

      at com.***.***.ajoin.Exception.regroup(ExecReducer.java:239)

      at com.***.***.ajoin.Exception.reduce(ExecReducer.java:263)

      at com.***.***.ajoin.Exception.regroup(ExecReducer.java:1)

      at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:430)

      at org.apache.hadoop.mapred.child.main(Child.java:155)

Caused by:java.lang.reflect.InvocationTargetException

      at sun.reflect.GeneratedConstructorAccessor6.newInstance(Unknow Source)

      at sun.reflect.DelegationConstructorAccessorImp1.newInstance(DelegatingConstructorA

      at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

      at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:79)

      ... 6 more

Caused by:java.lang.OutOfMemoryError:java heap space

     at java.nio.ByteBuffer.allocate(ByteBuffer.java:312)

     at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:760)

     at org.apache.hadoop.io.Text.encode(Text.java:388)

     at org.apache.hadoop.io.Text.set(Text.java:178)

     at org.apache.hadoop.io.Text.(Text.java:81)

     at org.apache.hadoop.contrib.utils.join.TaggedMapOutput.(TaggedMapOut.java:37)

     at com.***.***.ajoin.AjoinTaggedMapOutput.(AjoinTaggedMapOutput.java:15)

     ... 10 more

 

以及exception: java.lang.OutOfMemoryError: GC overhead limit exceeded
hadoop给每一个进程的空间默认是200M以上(具体不清楚,就是很小),可将这个参数调整以下,调整方法如下:

进入hadoop安装目录,conf文件下,编辑hadoop-site.xml文件,添加或修改
<property>
  <name>mapred.child.java.opts</name>
  <value>-Xmx1024m</value>
</property>
该参数设置了任务进程的jvm的使用内存,我设置为1G,可视个人情况来定。
Java has a couple of settings that help control how much memory it uses:

  • -Xmx sets the maximum memory heap size
  • -Xms sets the minimum memory heap size

这个参数只能使从修改过的服务器提交的任务占有1G空间,其他服务器提交的保持各自的状态。

修改整个机群:
我首先修改hadoop集群的配置hadoop-release/conf/hadoop-default.xml,将该配置修改为-Xmx2048m
任何同步所有节点的该配置,然后重启这个集群。
然后运行任务发现,那个task的java进程仍然是运行-Xmx200m参数下,为什么?

    原来-Xmx200m参数来至与提交job的客户端参数,因为offer提交job的机器在44.1上,在44.1上的hadoop客户端配置是-Xmx200m,这样提交的job会使用该配置。

后面将hadoop客户端配置修改为-Xmx1048m,重新运行一个job,查看hadoop集群的task进程,
已经发现进程已经运行在-Xmx1048m参数下。

分享到:
评论

相关推荐

    hadoop出错解决方法

    但是在使用 Hadoop 过程中,我们经常会遇到一些错误和问题,本文将为您提供一些常见的 Hadoop 故障解决方法。 一、Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out 这个错误是由于系统默认的打开...

    基于eclipse的hadoop应用开发

    如果在运行过程中出现`java.lang.OutOfMemoryError: Java heap space`错误,则需要调整JVM参数。在`Run Configurations`中的`VM Arguments`中加入以下参数:`-Xms512m -Xmx1024m -XX:MaxPermSize=256m`。 5. **...

    Hadoop入门实战手册

    - **java.lang.OutOfMemoryError: Java heap space**:表示Java虚拟机的堆内存不足,可以通过调整JVM的参数来解决。 **7.5 防火墙的端口开放要求** - **与HDFS有关的地址及端口属性**:为了保证HDFS的正常运行,...

    Hadopp集群运用过程中碰到的问题

    在使用Hadoop集群的过程中,可能会遇到一系列的错误和问题,这些问题主要集中在集群的启动、在Master上运行示例以及在Windows环境下使用Eclipse运行程序时。以下是对这些常见错误的详细解析和解决策略: 1. **启动...

    hive on spark mr 数据开发常见问题解决

    在Hive on Spark MR(MapReduce)数据开发中,开发者经常遇到各种问题,这些问题往往阻碍了工作效率。以下是一些常见的问题及其解决方案: 1. **Shuffle in Fetcher#6 错误** 当Hive作业处理大数据量时,可能会...

    hive启动及安装.txt

    在启动Hive的过程中可能会遇到不同的错误,比如Java内存溢出错误(java.lang.OutOfMemoryError: Java heap space),这个问题通常是由于JVM配置的堆内存太小,无法满足Hive运行的需求。此时可能需要调整Hadoop或Hive...

Global site tag (gtag.js) - Google Analytics