当前位置:   article > 正文

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

execution error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.mapred

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
  • 1
  • 2

在这里插入图片描述

2. 原因汇总

2.1 没有开启hive的metastore服务

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

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

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

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

# 设置后查看硬件时间
hwclock -show
  • 1
  • 2
  • 3
  • 4

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

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

解决办法:

  • 可以重新启动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. 幸运的是,问题原因都是查看日志和百度查看其他人博客解决,所以我也会将这些错误汇总出来,希望可以给大家一些帮助。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/597296
推荐阅读
相关标签
  

闽ICP备14008679号