Error while processing statement failed execution error return code 2 from org apache hadoop hive

@Mahipal Ramidi! Ideally, keep Tez global settings as they are and set tez.grouping.max-size to a value that makes sense for the query you execute, always higher than the tez.grouping.min-size which you set globally. If your global tez.grouping_min-size is not low enough to allow you to set your ses...

While executing a select query when other queries are running in Hive we are facing below error . Can you some one suggest me what could be the reason for below error.

Error while
processing statement: FAILED: Execution Error, return code 2 from
org.apache.hadoop.hive.ql.exec.tez.TezTask. Vertex failed, vertexName=Map 1,
vertexId=vertex_1470078643944_0469_5_00, diagnostics=[Vertex
vertex_1470078643944_0469_5_00 [Map 1] killed/failed due
to:ROOT_INPUT_INIT_FAILURE, Vertex Input: se initializer failed,
vertex=vertex_1470078643944_0469_5_00 [Map 1],
org.apache.tez.dag.api.TezUncheckedException: Invalid max/min group lengths.
Required min>0, max>=min. max: 4194304 min: 16777216

at
org.apache.hadoop.mapred.split.TezMapredSplitsGrouper.getGroupedSplits(TezMapredSplitsGrouper.java:147)

at org.apache.hadoop.hive.ql.exec.tez.SplitGrouper.group(SplitGrouper.java:89)

at org.apache.hadoop.hive.ql.exec.tez.SplitGrouper.generateGroupedSplits(SplitGrouper.java:168)

at
org.apache.hadoop.hive.ql.exec.tez.SplitGrouper.generateGroupedSplits(SplitGrouper.java:138)

at org.apache.hadoop.hive.ql.exec.tez.HiveSplitGenerator.initialize(HiveSplitGenerator.java:159)

at
org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable$1.run(RootInputInitializerManager.java:273)

at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable$1.run(RootInputInitializerManager.java:266)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:422)

at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1709)

at
org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable.call(RootInputInitializerManager.java:266)

at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable.call(RootInputInitializerManager.java:253)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:745)

]Vertex killed,
vertexName=Map 2, vertexId=vertex_1470078643944_0469_5_01, diagnostics=[Vertex
received Kill in INITED state., Vertex vertex_1470078643944_0469_5_01 [Map 2]
killed/failed due to:OTHER_VERTEX_FAILURE]Vertex killed, vertexName=Reducer 3,
vertexId=vertex_1470078643944_0469_5_02, diagnostics=[Vertex received Kill in
INITED state., Vertex vertex_1470078643944_0469_5_02 [Reducer 3] killed/failed
due to:OTHER_VERTEX_FAILURE]Vertex killed, vertexName=Reducer 4,
vertexId=vertex_1470078643944_0469_5_03, diagnostics=[Vertex received Kill in
INITED state., Vertex vertex_1470078643944_0469_5_03 [Reducer 4] killed/failed
due to:OTHER_VERTEX_FAILURE]DAG did not succeed due to VERTEX_FAILURE.
failedVertices:1 killedVertices:3

Appreciated for your help in advance.

Я осознаю:

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

10 ответы

Это не настоящая ошибка, вот как ее найти:

Перейдите на веб-панель Hadoop jobtracker, найдите неудачные задания hive mapreduce и просмотрите журналы неудачных задач. Это покажет вам реальные ошибка.

Ошибки вывода консоли бесполезны, в основном потому, что у нее нет представления об отдельных заданиях/задачах, чтобы вытащить настоящие ошибки (могут быть ошибки в нескольких задачах)

Надеюсь, это поможет.

Создан 28 июн.

Я знаю, что опоздал на 3 года в этой теме, но все же вношу свои 2 цента за подобные случаи в будущем.

Недавно я столкнулся с той же проблемой/ошибкой в ​​своем кластере. JOB всегда приводил к сокращению примерно на 80%+ и терпел неудачу с той же ошибкой, и в журналах выполнения также ничего не происходило. После нескольких итераций и исследований я обнаружил, что среди множества загружаемых файлов некоторые не соответствовали структуре, предусмотренной для базовой таблицы (таблица, используемая для вставки данных в секционированную таблицу).

Здесь следует отметить, что всякий раз, когда я выполнял запрос выбора для определенного значения в столбце разделения или создавал статический раздел, он работал нормально, поскольку в этом случае записи об ошибках пропускались.

TL;DR: проверьте входящие данные/файлы на несогласованность в структурировании, поскольку HIVE следует философии Schema-On-Read.

ответ дан 07 апр.

Добавлю здесь немного информации, так как мне потребовалось некоторое время, чтобы найти веб-панель Hadoop Jobtracker в HDInsight (Azure’s Hadoop), и мой коллега наконец показал мне, где она находится. На головном узле есть ярлык «Статус пряжи Hadoop», который является просто ссылкой на локальную http-страницу (http://headnodehost:9014/cluster в моем случае). При открытии приборная панель выглядела так:

Введите описание изображения здесь

В этой панели вы можете найти свое неудачное приложение, а затем, нажав на него, вы можете посмотреть журналы отдельной карты и уменьшить количество заданий.

В моем случае показалось все еще нехватка памяти в редьюсерах, хотя я уже провернул память в конфигурации. По какой-то причине он не показывал ошибки «java outofmemory», которые я получил ранее.

Создан 09 сен.

Я удалил файл _SUCCESS из выходного пути EMR в S3, и он работал нормально.

ответ дан 10 апр.

Верхний ответ правильный, что код ошибки не дает вам много информации. Одной из распространенных причин, которую мы видели в нашей команде для этого кода ошибки, была плохая оптимизация запроса. Известная причина заключалась в том, что мы делаем внутреннее соединение с величинами левой стороны таблицы больше, чем таблица с правой стороны. В таких случаях обычно помогала замена этих таблиц.

Создан 14 сен.

Я также столкнулся с той же ошибкой, когда вставлял данные во внешнюю таблицу HIVE, которая указывала на эластичный поисковый кластер.

Я заменил старый JAR elasticsearch-hadoop-2.0.0.RC1.jar в elasticsearch-hadoop-5.6.0.jar, и все работало нормально.

Мое предложение: используйте конкретный JAR в соответствии с эластичной версией поиска. Не используйте старые JAR-файлы, если вы используете более новую версию эластичного поиска.

Благодаря этому сообщению Hive-Elasticsearch Операция записи #409

Создан 15 сен.

Даже я столкнулся с той же проблемой — при проверке на панели инструментов я обнаружил следующую ошибку. Поскольку данные проходили через Flume и прерывались между ними, из-за чего могла быть несогласованность в нескольких файлах.

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

Работая с меньшим количеством файлов, это сработало. В моем случае причиной была согласованность формата.

Создан 15 сен.

Я столкнулся с той же проблемой, потому что у меня не было разрешения на запрос базы данных, которую я пытался сделать.

В случае, если у вас нет разрешения на запрос таблицы/базы данных, помимо Return Code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask ошибка, вы увидите, что в Cloudera Manager даже не регистрируется ваш запрос.

ответ дан 07 мая ’20, 21:05

Получил эту ошибку при объединении двух таблиц. И одна таблица большая по размеру, а другая маленькая, влезла бы в память диска. В таком случае используйте

set hive.auto.convert.join = false

Это может помочь избавиться от вышеуказанной ошибки. Для получения более подробной информации по этому вопросу, пожалуйста, обратитесь к темам ниже

  1. Тайна конфигурации Hive Map-Join
  2. Hive.auto.convert.join = true, что это значит?

Создан 15 июн.

Я получил ту же ошибку при создании таблицы кустов в beeline, а затем попытался создать ее через spark-shell, которая выдала фактическую ошибку. В моем случае ошибка была связана с квотой дискового пространства для каталога hdfs.

org.apache.hadoop.ipc.RemoteException: превышена квота DiskSpace для /user/hive/warehouse/XXX_XX.db: квота = 6597069766656 B = 6 ТБ, но занятое дисковое пространство = 6597493381629 B = 6.00 ТБ

Создан 05 янв.

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками

hadoop
mapreduce
hive

or задайте свой вопрос.

When using Hive queries on input data presented in ORC format, sometimes when generating splits information the problem of Out of Memory appears. Similar to the following:

java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask. Vertex failed, vertexName=Map 11, vertexId=vertex_1579804408949_99772_1_08, diagnostics=[Vertex vertex_1579804408949_99772_1_08 [Map 11] killed/failed due to:ROOT_INPUT_INIT_FAILURE, Vertex Input: g initializer failed, vertex=vertex_1579804408949_99772_1_08 [Map 11], java.lang.RuntimeException: serious problem
 at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat.generateSplitsInfo(OrcInputFormat.java:1277)
 at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat.getSplits(OrcInputFormat.java:1304)
 at org.apache.hadoop.hive.ql.io.HiveInputFormat.addSplitsForGroup(HiveInputFormat.java:312)
 at org.apache.hadoop.hive.ql.io.HiveInputFormat.getSplits(HiveInputFormat.java:414)
 at org.apache.hadoop.hive.ql.exec.tez.HiveSplitGenerator.initialize(HiveSplitGenerator.java:155)
 at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable$1.run(RootInputInitializerManager.java:273)
 at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable$1.run(RootInputInitializerManager.java:266)
 at java.security.AccessController.doPrivileged(Native Method)
 at javax.security.auth.Subject.doAs(Subject.java:422)
 at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1869)
 at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable.call(RootInputInitializerManager.java:266)
 at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable.call(RootInputInitializerManager.java:253)
 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded
 at java.util.concurrent.FutureTask.report(FutureTask.java:122)
 at java.util.concurrent.FutureTask.get(FutureTask.java:192)
 at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat.generateSplitsInfo(OrcInputFormat.java:1272)
 ... 15 more
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
 at org.apache.hadoop.hive.ql.io.orc.OrcProto$ColumnStatistics$1.parsePartialFrom(OrcProto.java:5005)
 at org.apache.hadoop.hive.ql.io.orc.OrcProto$ColumnStatistics$1.parsePartialFrom(OrcProto.java:5000)
 at com.google.protobuf.CodedInputStream.readMessage(CodedInputStream.java:309)
 at org.apache.hadoop.hive.ql.io.orc.OrcProto$StripeStatistics.<init>(OrcProto.java:14334)
 at org.apache.hadoop.hive.ql.io.orc.OrcProto$StripeStatistics.<init>(OrcProto.java:14281)
 at org.apache.hadoop.hive.ql.io.orc.OrcProto$StripeStatistics$1.parsePartialFrom(OrcProto.java:14370)
 at org.apache.hadoop.hive.ql.io.orc.OrcProto$StripeStatistics$1.parsePartialFrom(OrcProto.java:14365)
 at com.google.protobuf.CodedInputStream.readMessage(CodedInputStream.java:309)
 at org.apache.hadoop.hive.ql.io.orc.OrcProto$Metadata.<init>(OrcProto.java:15008)
 at org.apache.hadoop.hive.ql.io.orc.OrcProto$Metadata.<init>(OrcProto.java:14955)
 at org.apache.hadoop.hive.ql.io.orc.OrcProto$Metadata$1.parsePartialFrom(OrcProto.java:15044)
 at org.apache.hadoop.hive.ql.io.orc.OrcProto$Metadata$1.parsePartialFrom(OrcProto.java:15039)
 at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:89)
 at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:95)
 at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:49)
 at org.apache.hadoop.hive.ql.io.orc.OrcProto$Metadata.parseFrom(OrcProto.java:15176)
 at org.apache.hadoop.hive.ql.io.orc.ReaderImpl.extractMetadata(ReaderImpl.java:468)
 at org.apache.hadoop.hive.ql.io.orc.OrcTail.getMetadata(OrcTail.java:131)
 at org.apache.hadoop.hive.ql.io.orc.ReaderImpl.<init>(ReaderImpl.java:332)
 at org.apache.hadoop.hive.ql.io.orc.OrcFile.createReader(OrcFile.java:241)
 at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat$SplitGenerator.populateAndCacheStripeDetails(OrcInputFormat.java:1122)
 at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat$SplitGenerator.callInternal(OrcInputFormat.java:1014)
 at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat$SplitGenerator.access$2000(OrcInputFormat.java:851)
 at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat$SplitGenerator$1.run(OrcInputFormat.java:1005)
 at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat$SplitGenerator$1.run(OrcInputFormat.java:1002)
 at java.security.AccessController.doPrivileged(Native Method)
 at javax.security.auth.Subject.doAs(Subject.java:422)
 at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1869)
 at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat$SplitGenerator.call(OrcInputFormat.java:1002)
 at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat$SplitGenerator.call(OrcInputFormat.java:851)
 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

Let us walk through the basic concepts of ORC to understand the essence of this phenomenon.

ORC File Basics

ORC is a column-oriented data storage format for the Apache Hadoop ecosystem. It is compatible with most large data processing tools in the Apache Hadoop environment and is similar to other RCFile and Parquet columnar formats. We have already reviewed the file formats.

ORC files are completely self-describing and are not dependent on Hive metastore or any other external metadata. The file includes all information about the type and encoding of the objects stored in the file. Since the file is self-contained, it is independent of the user’s environment for proper interpretation of the file content.

An ORC file consists of data groups called stripes, along with auxiliary information in the file footer. The large size of stripes makes it possible to read data from HDFS efficiently.

Inside the stripes, the columns are separated from each other, allowing the selective reading of the data, guaranteeing high processing speed. Predicates and indexes allow you to determine which stripes in the file should be read for a particular request, and indexes narrow the search area to a row group (10k rows), further increasing the speed of reading information. The indexes are constructed on each of the columns that affect the speed of reading, increasing the overall size.

At the end of the file, the postscript contains the compression options and the size of the compressed footer. The footer of the file contains a list of stripes in the file, the number of rows on stripe and the data type of each column and various metadata.

Split calculation

It’s always a very challenging piece because it happens before your process actually starts so it’s happening on the client before you actually get going. There are three strategies it’s actually two but I’ll

Hive’s OrcInputFormat has three(basically two) strategies for split calculation:

BI — it is set for small fast queries where you don’t want to spend very much time in split calculations and it just reads the blocks and splits blindly based on HDFS blocks and it deals with it after that

ETL — is for large queries that one it actually reads the file footers and applies the approach down predicate to the strike that can make a huge difference

Hybrid — if there’s a lot of small or if there are lots of small files or there’s a lot of files that will use the BI strategy otherwise it will use ETL

The Out of Memory error could occur because of using the default split strategy (Hybrid), which in my case redirects to ETL strategy that requires more memory.

I recommend using the ORC split strategy as BI by setting the parameter below:

hive.exec.orc.split.strategy=BI

Recommended books

  • Programming Hive: Data Warehouse and Query Language for Hadoop

Simplified version for reproducing issue as provided by wzheng

set hive.mapred.mode=nonstrict;
set hive.explain.user=false;
set hive.execution.engine=mr;
set hive.auto.convert.join=true;

DROP TABLE IF EXISTS t1;

CREATE TABLE t1 (c1 int, c2 int) clustered by (c1) into 10 buckets stored as orc;

INSERT INTO t1 VALUES (1, 2), (3, 4);

SELECT * FROM t1;

EXPLAIN
SELECT INPUT__FILE__NAME, t1.c1, t1.c2
FROM t1
INNER JOIN
(SELECT * FROM t1 WHERE t1.c1 = 1) sub
ON sub.c1 = t1.c1;

SELECT INPUT__FILE__NAME, t1.c1, t1.c2
FROM t1
INNER JOIN
(SELECT * FROM t1 WHERE t1.c1 = 1) sub
ON sub.c1 = t1.c1;

From hiveserver2.log:

INFO  [HiveServer2-Background-Pool: Thread-694]: lockmgr.DbTxnManager (DbTxnManager.java:acquireLocks(207)) - Setting lock request transaction to txnid:58 for queryId=hive_20170314035259_6a38c0fa-3dcd-4ebf-abc2-6ad61f33e040
....
 [HiveServer2-Background-Pool: Thread-694]: ql.Driver (Driver.java:execute(1411)) - Starting command(queryId=hive_20170314035259_6a38c0fa-3dcd-4ebf-abc2-6ad61f33e040): <query>
....
 ERROR [HiveServer2-Background-Pool: Thread-694]: exec.Task (SessionState.java:printError(993)) -
Task failed!
Task ID:
  Stage-15

Logs:
....
 ERROR [HiveServer2-Background-Pool: Thread-694]: ql.Driver (SessionState.java:printError(993)) - FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask

There are no failed jobs on the RM UI, the MapredLocalTask log shows the below error:

ERROR mr.MapredLocalTask (MapredLocalTask.java:executeInProcess(356)) - Hive Runtime Error: Map local work failed
java.lang.NullPointerException
        at org.apache.hadoop.hive.ql.exec.ExprNodeColumnEvaluator.initialize(ExprNodeColumnEvaluator.java:56)
        at org.apache.hadoop.hive.ql.exec.JoinUtil.getObjectInspectorsFromEvaluators(JoinUtil.java:77)
        at org.apache.hadoop.hive.ql.exec.HashTableSinkOperator.initializeOp(HashTableSinkOperator.java:147)
        at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:363)
        at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:482)
        at org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:439)
        at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:376)
        at org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask.initializeOperators(MapredLocalTask.java:461)
        at org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask.startForward(MapredLocalTask.java:365)
        at org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask.executeInProcess(MapredLocalTask.java:345)
        at org.apache.hadoop.hive.ql.exec.mr.ExecDriver.main(ExecDriver.java:744)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:233)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:148)

Понравилась статья? Поделить с друзьями:
  • Error while processing saml response перевод
  • Error while processing function call
  • Error while powering on vmware player failed to start the vmware authorization service
  • Error while powering on vmware player cannot connect to the virtual machine
  • Error while powering on unable to open kernel device vmcidev vmx