Hive错误之 Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask错误分析

19 篇文章 1 订阅
19 篇文章 0 订阅

Hive Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask错误分析

1. 背景

  1. 使用hive过程中,遇到问题有时候信息不是很足够,这时候就需要去想办法查看错误信息。而这类服务器框架的错误信息一般都存放在日志中
  2. hive的日志不设置的话,默认存放在/tmp下当前用户所在目录,本文演示是root用户,所以文件存放在tmp文件夹下的root目录下/tmp/root
    在这里插入图片描述
    已经按照日期和时间进行存储,查看最新的日志文件信息即可
# 使用tail命令查看日志文件最后200行,日志都是追加,所以一般都是从尾部查看。 同时为了快速检索,可以查看error级别信息,时间信息也看一下,因为程序运行出错时间是可以确定地,根据这个可以去查看日志中对应时间的信息。
tail -200 hive.log

在这里插入图片描述

2. 原因汇总

2.1 没有开启hive的metastore服务

# 这是在hive shell客户端之外执行的,注意注意
hive --service metastore

2.2 集群中各个节点时间不同步导致

  1. 连接各个节点,输入date查看时间信息
date
  1. 安装日期同步工具
yum -y install ntp ntpdate
  1. 设置日期同步指令
ntpdate cn.pool.ntp.org

# 或者使用这一条指令
ntpdate -u ntp.api.bz
  1. 将系统时间写入硬件时间(主板中会有电池,这个电池耗尽之前,主板时间都会相对精准)
hwclock –w

# 设置后查看硬件时间
hwclock -show

2.3 执行hive shell指令的集群节点内存耗尽

  1. 如果在日志中看到是memoryOutOfUse等错误信息,再查看一下系统内存信息
# 主要查看剩余可用的内存,如果只有200到300Mb,很多时候就会报这个错误。
free -h

解决办法:

  • 可以重新启动hive服务或者重新启动节点机器,这样内存可以被释放出来,
  • 使用linux的内存释放方法
  • 加内存条
  • 使用yarn模式运行,不要使用local模式运行,这样单节点的内存消耗会慢很多

2.4 由于hadoop 3.2.1和hive 3.1.2不兼容

  1. 将hadoop 3.2.1适配的hive 3.1.1一起安装,不要安装hive 3.1.2.强行安装在一起会导致内存不回收的问题,本地模式执行一段时间后,内存就会被耗尽。最后导致hive转换的mapreduce程序因为内存耗尽而报错

3. 总结

  1. 很不幸,也很幸运,上述的坑我都踩过。耗费一整晚的时间进行定位和修复
  2. 幸运的是,问题原因都是查看日志和百度查看其他人博客解决,所以我也会将这些错误汇总出来,希望可以给大家一些帮助。
  • 43
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值