在我们的数仓运行过程中,执行调度98%概率会出出现的两个报错:
第一个:
Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
第二个:
Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. Could not find status of job:job_1656914358436_*
这两个问题的出现。网上说jobname的名字长度问题,我们采取网上的方法有:
hive.jobname.length=10 (#从10试到100都不行)
mapred.job.name=jobname
该办法无效!
此下是我们的解决思路:
我们找到一个报错的job_id 拿到yarn中查找日志,
application_1656914358436_5014 pstagejobnameMAPREDUCEhive0Mon Jul 4 16:30:23 +0800 2022Mon Jul 4 16:30:24 +0800 2022Mon Jul 4 16:30:47 +0800 2022FINISHEDSUCCEEDEDN/AN/AN/AN/AN/A0.00.0 History 0
在application_1656914358436_5014 中找logs
application_1656914358436_5014_000001 Mon Jul 4 16:30:23 +0800 2022 http://hadoop3:8042 LOGS 0
点LOGS 进去:
我们找到了以下报错信息:
The directory item limit of /user/history/done_intermediate/pku is exceeded: limit=1048576 items=1048576
问题原因:
发现是pku用户下的文件个数超出了1048576的限制,
于是乎:
我们执行解决办法:
hdfs dfs -rm -r /user/history/done_intermediate/pku/*
删了一些后马上就能执行成功。