Hive On Tez报错汇总

本文针对Hive使用Tez引擎时遇到的Container内存溢出问题,提供了三种解决方案,包括解除虚拟内存检查、调整虚拟内存与物理内存比例及优化TezTask JVM堆内存分配。同时,解决了配置Tez后使用默认MR执行Job时的版本冲突问题。

前言

  • Hive:2.3.0
  • Hadoop:2.7.7
  • JDK:1.8.0_221
  • Tez:0.9.1

报错一

报错内容:

在Hive下使用Tez引擎执行MR Job时报错:Container killed on request. Exit code is 143

问题分析:

Container killed on request这几个关键字就可以猜测,Container在非正常结束时被kill,很有可能就是Container使用的内存超出Container限制导致的。

查看Hive运行日志:

Hive的默认日志存放路径为${sys:java.io.tmpdir}/${sys:user.name},可以通过修改log4j日志框架配置文件hive/conf/hive-log4j2.properties中的property.hive.log.dir参数,自定义Hive日志文件输出路径。Hive日志默认按天进行滚动,property.hive.log.dir下的hive.log文件代表当天运行日志,带有后缀的代表之前某天的Hive运行日志文件。

通过日志定位问题:

通过查看Hive运行日志,发现了Application失败的诊断信息(Diagnostics),并根据Hive日志提供的app跟踪链接(本次日志中显示的是http://hadoop102:8088/cluster/app/application_1591155550718_0012),查看到了具体的诊断信息:

Diagnostics: Container [pid=35306,containerID=container_1591155550718_0012_02_000001] is running beyond virtual memory limits. Current usage: 244.1 MB of 1 GB physical memory used; 2.3 GB of 2.1 GB virtual memory used. Killing container.

由诊断信息可以得知,Container运行时超过了虚拟内存限制,故非正常终结kill了Container,故接下来首个尝试的优化方案就是调整Hadoop集群的虚拟内存相关参数


解决方案:

方案一:

解除YARN的虚拟内存检查,即不限制Container对于虚拟内存的使用,在yarn-site.xml配置文件的configuration标签中增加以下配置参数:

    <!-- 是否限制Container对于虚拟内存的使用,即使超出预设的虚拟内存大小 -->
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值