开发者社区> 问答> 正文

hadoop mapreduce运行job task报OutOfMemoryError错误

hadoop mapreduce运行job task报OutOfMemoryError错误

java.lang.OutOfMemoryError: GC overhead limit exceeded
   at java.lang...

展开
收起
封神 2016-04-08 19:47:31 2933 0
1 条回答
写回答
取消 提交回答
  • 专注在大数据分布式计算、数据库及存储领域,拥有13+年大数据引擎、数据仓库、宽表引擎、平台研发经验,6年云智能大数据产品技术一号位经验,10年技术团队管理经验;云智能技术架构/云布道师; 研发阿里历代的大数据技术产品包括ODPS、DLA、ADB,最近五年主导宽表引擎研发、DLA、ADB湖仓研发;

    这是因为你的task内存使用超过了你申请的内存总量。Hadoop默认每个task使用的内存Heap size是200M(可以参考在配置文件hadoop-default.xml里设置的mapred.child.java.opts参数,-Xmx200m),如果你的task需要较多的内存,超过了200M,这时你可以为你的task申请更多的内存,方法是重设mapred.child.java.opts参数,比如在hadoop-site.xml里添加:

    <property>
      <name>mapred.child.java.opts</name>
      <value>-Xmx1024m</value>
    </property>

    或者在运行时通过 -Dmapred.child.java.opts=Xmx1024m
    这样你的task就可以使用1G内存,你也可以在命令行或程序里设置这个参数。

    2019-07-17 18:39:57
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《构建Hadoop生态批流一体的实时数仓》 立即下载
零基础实现hadoop 迁移 MaxCompute 之 数据 立即下载
CIO 指南:如何在SAP软件架构中使用Hadoop 立即下载

相关实验场景

更多