java hadoop 超时_Hadoop JVM调整解决 MapReduce 作业超时问题

在MapReduce作业中,由于关联大表导致reduce阶段超时。通过调整JVM相关参数,如`mapreduce.reduce.memory.mb`设为6G,解决了超时问题。关键设置包括`yarn.scheduler.minimum-allocation-mb`、`yarn.nodemanager.resource.memory-mb`、`mapreduce.map.memory.mb`和`mapreduce.reduce.java.opts`等,确保JVM堆大小不超过70%的分配内存。
摘要由CSDN通过智能技术生成

摘要:由于业务需要,在mapreduce汇总时需要关联两个基础表,一个60M左右,不影响mr运行,另一个表,大小约为380M,行数为1700万行左右,在默认配置下,一旦加载这个数据就会在reduce阶段卡住最后报超时错误,经过jvm的调整,终于解决了mr汇总的问题,这里简单总结下,回头有时间再详细看下集群调优。

MR汇总报错

在mr程序跑job时,reduce到一个点就卡住直到超时时间反馈超时再重试,一般都失败,如下图:

bc392773c846502a64ccdd5785c56216.png

超时时间是在配置文件的默认配置:

398387f56a1b633af47fcd5e0b637001.png

这里的提示是Container killed by the ApplicationMaster,并没有具体参数提示。查找一些资料后发现,需要调整opts的值mapreduce.reduce.java.opts,默认4G,调试为6G测试,即值为"-Djava.net.preferIPv4Stack=true -Xmx6442450944" ,报错如下:

Container [pid=7830,containerID=container_1397098636321_27548_01_000297] is running beyond physical memory limits. Current usage: 2.1 GB of 2 GB physical memory used; 2.7 GB of 4.2 GB virtual memory used. Killing container.

这里的错误就比较明显了,物理内存不够,虚拟内存还可以(默认情况下:虚拟内存是物理内存的2.1倍)。这里是在reduce阶段有问题,所以需要调整reduce运行时的物理内存,mapreduce.reduce.memory.mb这个参数默认值为4G,调整为6144 (即6G)后,执行mr作业,正常结束。

总结了如下相关jvm设置:

参数                                                                  默认值       描述

yarn.scheduler.minimum-allocation-mb                1024        每个container请求的最低jvm配置,单位m。如果请求的内存小于该值,那么会重新设置为该值。

yarn.scheduler.maximum-allocation-mb                8192        每个container请求的最高jvm配置,单位m。如果大于该值,会被重新设置。

yarn.nodemanager.resource.memory-mb              8192        每个nodemanager节点准备最高内存配置,单位m

mapreduce.{map,reduce}.memory.mb                 1024        设置运行map/reduce container的内存大小,单位m

mapreduce.{map,reduce}.java.opts                     -Xmx        设置执行map/reduce任务的JVM参数,值小于上一行设置的值,是在container中建立的jvm堆内存

mapreduce.map.memory.mb = (1~2倍) * yarn.scheduler.minimum-allocation-mb

mapreduce.reduce.memory.mb = (1~4倍) * yarn.scheduler.minimum-allocation-mb

总结:最终运行参数给定的jvm堆大小必须小于参数指定的map和reduce的memory大小,最好为70%以下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值