code1/2/3
前言
- hive的报错code1/2/3实在是太烦人了
- 解决方法
-
搜索
application_
,找到你的报错job的url- The url to track the job: http:省略。。。。/proxy/application_1620706700013_2342264/
-
进入yarn搜索该job的id
-
点击log
-
- 点进去发现log是不全的,点击查看完整log
- 搜索
error
- 根据对应的error修改你的报错吧
实例
return code 1
原因1及解决:
-
‘Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask’
-
基本上是执行的HQL无法加入到对应的用户队列中。
-
解决方法 1:
- 执行HQL前,加入 set MapReduce.queue = QUEUE_CRA; CRA(用户名)
-
解决方法 2:
- hdfs dfs命令对文件夹下的文件赋予权限。使其可以进行操作。
原因2及解决
- 报错:
- FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
- hive报错
- 原因:
- localtask出现了内存溢出
- 解决方法1:
- 调大localtask的内存(默认1G,调大到4G)
- set hive.mapred.local.mem=4096
- 解决方法2:
- 直接关闭表的autojoin
- set hive.auto.convert.join=false;
return code 2:
原因 1及解决:
- HQL产生较大的笛卡尔积,撑爆了HIVE 执行的最大线程载荷。
- 解决方法:
- 优化HQL.
原因 2 及解决:
- Hive运行成功之后,当输入select count(*) from XX或者插入数据时,居然碰到BUG。
- 2016-04-14 12:31:56,199 Stage-1 map = 0%, reduce = 0%
Ended Job = job_1460599682683_0005 with errors
Error during job, obtaining debugging information…
FAILED: Execution Error, return code 2fromorg.apache.hadoop.hive.ql.exec.mr.MapRedTask
MapReduce Jobs Launched:
Stage-Stage-1: HDFS Read: 0HDFS Write: 0 FAIL
Total MapReduce CPU Time Spent: 0 msec - 这个问题只是HIVE单方面的问题,而用Hadoop Job日志查看,却是YarnException: Unauthorized request to start container的问题。
- 未经授权的请求,怎么会有这样的问题呢。网上说是各个节点的时间未同步的问题。
- 解决方法:
- 把时间进行修改,进行系统时间同步
- 原文
原因3及解决
- Caused by: org.apache.hadoop.hive.ql.metadata.HiveFatalException: [Error 20004]:
Fatal error occurred when node tried to create too many dynamic partitions.
The maximum number of dynamic partitions is controlled by hive.exec.max.dynamic.partitions and hive.exec.max.dynamic.partitions.pernode. Maximum was set to: 100
- 解释
- 给的提示很明显,默认动态分区最大数量被设成了100,这是由这两个参数。。。控制的
- 解决
- 需要根据数据调整这两个参数
- 第一个属性可确保创建的分区总数不超过500,
- 第二个属性可确保单个reducer不会创建超过500个分区(假设两个值均设置为500)
set hive.exec.max.dynamic.partitions = 500
set hive.exec.max.dynamic.partitions.pernode = 500
原因4及解决
- 报错
- Error during job, obtaining debugging information…
- 原因
- namenode内存空间不够,JVM剩余内存空间不够新job运行所致
Error during job, obtaining debugging information...
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask MapReduce Jobs Launched: Stage-Stage-1: Map: 1 Cumulative CPU: 5.67 sec HDFS Read: 0 HDFS Write: 0 FAIL
- 解决
- 设置成本地模式来执行任务试试
set hive.exec.mode.local.auto=true;
原因5及解决
return code 3:
原因1及解决
- 报错
- FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
- 解决方法 1:
- 对数据大的表进行GROUP BY ,减少数据量。
- 解决方法 2:
- set hive.auto.convert.join = false;
- 说明:是不是依据输入文件的大小,将Join转成普通的Map Join
- 默认值: false
- set hive.ignore.mapjoin.hint = false;
- 说明: 是否忽略mapjoin hint 即mapjoin标记
- 默认值: true
- set hive.exec.parallel = true;
- 说明:是否并行提交任务
- 默认值:false
- set hive.auto.convert.join = false;
原因2及解决
-
报错:
- Hive Runtime Error: Map local work exhausted memory
- hive报错
-
原因:
- localtask出现了内存溢出
-
解决方法1:
- 调大localtask的内存(默认1G,调大到4G)
- set hive.mapred.local.mem=4096
-
解决方法2:
- 直接关闭表的autojoin
- set hive.auto.convert.join=false;
-
可以看下这几篇博客:
https://blog.csdn.net/nysyxxg/article/details/73872245
https://blog.csdn.net/nieyanshun_me/article/details/54601492
https://blog.csdn.net/huangjin0507/article/details/49926317