HIVE报错记录

执行sql时报错信息

Error: Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask (state=08S01,code=2)

MR任务报错

Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster

解决方法:

[hadoop@n4 hadoop]$ hadoop classpath
/home/hadoop/hadoop-3.2.3/etc/hadoop:/home/hadoop/hadoop-3.2.3/share/hadoop/common/lib/*:/home/hadoop/hadoop-3.2.3/share/hadoop/common/*:/home/hadoop/hadoop-3.2.3/share/hadoop/hdfs:/home/hadoop/hadoop-3.2.3/share/hadoop/hdfs/lib/*:/home/hadoop/hadoop-3.2.3/share/hadoop/hdfs/*:/home/hadoop/hadoop-3.2.3/share/hadoop/mapreduce/lib/*:/home/hadoop/hadoop-3.2.3/share/hadoop/mapreduce/*:/home/hadoop/hadoop-3.2.3/share/hadoop/yarn:/home/hadoop/hadoop-3.2.3/share/hadoop/yarn/lib/*:/home/hadoop/hadoop-3.2.3/share/hadoop/yarn/*

将获取的classpath配置到yarn-site.xml中并重启yarn和hive服务

<property>
    <name>yarn.application.classpath</name>
    <value>
/home/hadoop/hadoop-3.2.3/etc/hadoop:/home/hadoop/hadoop-3.2.3/share/hadoop/common/lib/*:/home/hadoop/hadoop-3.2.3/share/hadoop/common/*:/home/hadoop/hadoop-3.2.3/share/hadoop/hdfs:/home/hadoop/hadoop-3.2.3/share/hadoop/hdfs/lib/*:/home/hadoop/hadoop-3.2.3/share/hadoop/hdfs/*:/home/hadoop/hadoop-3.2.3/share/hadoop/mapreduce/lib/*:/home/hadoop/hadoop-3.2.3/share/hadoop/mapreduce/*:/home/hadoop/hadoop-3.2.3/share/hadoop/yarn:/home/hadoop/hadoop-3.2.3/share/hadoop/yarn/lib/*:/home/hadoop/hadoop-3.2.3/share/hadoop/yarn/*
    </value>
  </property>

==========================================================================

堆内存溢出报错

环境信息为测试环境

2022-07-21 11:09:48,808 ERROR [main] org.apache.hadoop.mapred.YarnChild: Error running child : java.lang.OutOfMemoryError: Java heap space

解决方法:

通过报错看到是在map阶段OOM,所以调整map阶段内存参数

查看hive map任务堆内存资源设置

堆内存为512m,这里调大该参数,设置为800m,再次尝试

# map 任务内存总大小
SET mapreduce.map.memory.mb=1024;
# map 堆大小
SET mapreduce.map.java.opts=-Xms800m -Xmx800m;
# reduce 任务内存总大小
SET mapreduce.reduce.memory.mb=1024;
# reduce 堆大小
SET mapreduce.reduce.java.opts=-Xmx1024m;

成功跑出数据

==========================================================================

TEZ引擎报错:

java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V

报错原因:

该类来自于guava.jar

hive和hadoop中该jar包版本不一致导致

解决方法:

把hadoop中该jar包复制到hive的lib中

hadoop位置:

$HADOOP_HOME/shard/hadoop/hdfs/lib/

报错信息:

Column length too big for column 'PARAM_VALUE' (max = 21845);

原因是编码问题,重新把hive与mysql的关联的数据库编码改成latin1就行了

alter database hive character set latin1;


HIVE报错记录
https://www.hechunyu.com/archives/1698221932063
作者
chunyu
发布于
2022年12月25日
许可协议