hive配置优化

错误描述

执行 hive 任务报错

#==highlighting text==
#版本:
#Hive 2.2.0
#Hadoop 2.7.6


Exit code is 143 Container exited with a non-zero exit code 143
#附加上次执行日志:
22/03/20 04:32:20 INFO mapreduce.Job: Job job_1627608309192_64953 running in uber mode : false
22/03/20 04:32:20 INFO mapreduce.Job:  map 0% reduce 0%
22/03/20 05:02:48 INFO mapreduce.Job: Task Id : attempt_1627608309192_64953_m_000063_0, Status : FAILED
22/03/20 05:02:48 INFO mapreduce.Job: Task Id : attempt_1627608309192_64953_m_000087_0, Status : FAILED
22/03/20 05:02:48 INFO mapreduce.Job: Task Id : attempt_1627608309192_64953_m_000071_0, Status : FAILED

Hive 任务执行时设置的参数
查看关于 container 内存的配置:

hive> SET mapreduce.map.memory.mb;
mapreduce.map.memory.mb=8192
hive> SET mapreduce.reduce.memory.mb;
mapreduce.reduce.memory.mb=16384
hive> SET yarn.nodemanager.vmem-pmem-ratio;
yarn.nodemanager.vmem-pmem-ratio=2.1
hive> set mapred.map.child.java.opts;
mapred.map.child.java.opts=-Xmx8192m

注:

yarn.nodemanager.vmem-pmem-ratio: 虚拟内存率,默认2.1

错误分析

从 hive 报错看是由于物理内存达到限制,导致 container 被 kill 掉报错。
过滤程序日志,看出现报错是属于哪一个阶段,是map task阶段或者reduce task阶段,是哪一阶段的内存不足导致的问题。

结论

从上面执行时候配置的参数看,单个map 和 reduce 分配物理内存 8G; 虚拟内存限制 8 * 2.1 = 16.8G 。
所以从上面的报错信息来看,是由于单个 task (map task 或 reduce task) 处理的数据量超过物理内存 8G 限制导致的,所以设置两个选项即可解决该问题。
###
mapreduce.map.memory.mb = 16384
mapred.map.child.java.opts=-Xmx13926m
###

  <property>
    <name>mapreduce.map.memory.mb</name>
    <value>16384</value>
    <description>Comma separated list of variables which are used internally and should not be configurable.</description>
  </property>
  <property>
    <name>mapreduce.map.java.opts</name>
    <value>-Xmx13926m</value>
    <description>Comma separated list of variables which are used internally and should not be configurable.</description>
  </property>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值