什么是蜂巢:返回代码2从org.apache.hadoop.hive.ql.exec.MapRedT

2019-06-12 05:20发布

我正进入(状态:

FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask

虽然试图让使用蜂巢控制台的命令分区表的副本​​:

CREATE TABLE copy_table_name LIKE table_name;
INSERT OVERWRITE TABLE copy_table_name PARTITION(day) SELECT * FROM table_name;

我最初得到了一些语义分析错误,必须设置:

set hive.exec.dynamic.partition=true
set hive.exec.dynamic.partition.mode=nonstrict

虽然我不知道上面的性能呢?

从蜂巢控制台的完全输出中:

Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapred.reduce.tasks=<number>
Starting Job = job_201206191101_4557, Tracking URL = http://jobtracker:50030/jobdetails.jsp?jobid=job_201206191101_4557
Kill Command = /usr/lib/hadoop/bin/hadoop job  -Dmapred.job.tracker=master:8021 -kill job_201206191101_4557
2012-06-25 09:53:05,826 Stage-1 map = 0%,  reduce = 0%
2012-06-25 09:53:53,044 Stage-1 map = 100%,  reduce = 100%
Ended Job = job_201206191101_4557 with errors
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask

Answer 1:

这不是真正的错误,这里是如何找到它:

转到Hadoop的JobTracker的Web的仪表板,发现失败的蜂巢MapReduce作业,看的失败任务的日志。 这会告诉你真正的错误。

控制台输出错误是没用的,这主要是beause它不具备的各个作业/任务的图拉真错误(也可能是多个任务的错误)

希望帮助。



Answer 2:

我知道我晚了3年在此线程,但是仍然提供我的2美分,在今后类似案件。

我最近在面对我的群集同样的问题/错误。 工作就会让一些80%+降低和失败,同样的错误,什么也没有在执行日志要么去上。 在多次迭代和研究我发现,在文件的过多得到装载部分呈不符合规定的基表的结构(表被用于将数据插入到分区表)。

点这里要注意的是,每当我执行SELECT查询在分区列一个特定的值或者创建它好工作在这种情况下,错误记录都被跳过静态分区。

TL; DR:检查结构的不一致性传入的数据/文件,HIVE如下架构,在读哲学。



Answer 3:

在这里添加一些信息,我花了一段时间来找到HDInsight Hadoop的JobTracker的Web的仪表板(Azure的Hadoop的),和他的同事终于给我看它在哪里。 有所谓的“Hadoop的纱线状态”头节点上的快捷方式这仅仅是一个到本地的HTTP页面链接( HTTP:// headnodehost:9014 /集群在我的情况)。 当打开仪表板是这样的:

在仪表板,你可以找到你的失败的应用程序,然后点击进入之后,你可以看一下各个地图的日志,并减少就业机会。

在我的情况下,它似乎在减速仍然可以运行内存,即使我已经拍成配置中的内存了。 出于某种原因,它没有堆焊“java的内存不足”的错误我前面虽然。



Answer 4:

我删除从S3的EMR输出路径_SUCCESS文件,它工作得很好。



Answer 5:

顶端回答是正确的,出错的代码不会给你很多信息。 其中之一,我们在我们的团队看到了这个错误代码的常见原因是,当查询未进行优化好。 一个已知的原因是,当我们做的比右侧大表左边表幅度内连接。 交换这些表通常会做在这种情况下的伎俩。



Answer 6:

即使我面临着同样的问题 - 在仪表板检查时,我发现下面的错误。 由于数据是通过水槽来了,由于已经中断之间在到可能存在不一致的几个文件。

Caused by: org.apache.hadoop.hive.serde2.SerDeException: org.codehaus.jackson.JsonParseException: Unexpected end-of-input within/between OBJECT entries

运行在较少的文件,它的工作。 格式一致性是在我的情况的原因。



Answer 7:

我也面临同样的错误,当我在插入数据到外部HIVE表将其指向弹性搜索群集。

我取代旧的JAR elasticsearch-hadoop-2.0.0.RC1.jarelasticsearch-hadoop-5.6.0.jar ,一切工作正常。

我的建议是请使用特定的JAR按照弹性搜索版本。 如果您使用的是弹性搜索的新版本,请勿使用较旧的JAR文件。

由于这个职位Hive- Elasticsearch写操作#409



文章来源: What is Hive: Return Code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask