Programing

Hive 란? : org.apache.hadoop.hive.ql.exec.MapRedTask의 리턴 코드 2

lottogame 2021. 1. 11. 07:29
반응형

Hive 란? : org.apache.hadoop.hive.ql.exec.MapRedTask의 리턴 코드 2


나는 얻고있다:

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

Hive 콘솔의 명령을 사용하여 파티션을 나눈 테이블의 복사본을 만들려고 할 때 :

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

이것은 실제 오류가 아닙니다. 찾는 방법은 다음과 같습니다.

hadoop jobtracker 웹 대시 보드로 이동하여 실패한 하이브 맵리 듀스 작업을 찾고 실패한 작업의 로그를 확인합니다. 그것은 당신에게 진짜 오류를 보여줄 것 입니다.

콘솔 출력 오류는 쓸모가 없습니다. 실제 오류를 가져 오는 개별 작업 / 작업에 대한보기가 없기 때문입니다 (여러 작업에 오류가있을 수 있음).

도움이되기를 바랍니다.


이 스레드에서 3 년 늦었지만 앞으로도 비슷한 사례에 대해 2 센트를 제공합니다.

최근에 클러스터에서 동일한 문제 / 오류가 발생했습니다. 작업은 항상 약 80 % 이상 감소하고 동일한 오류와 함께 실패하며 실행 로그에도 계속 표시되지 않습니다. 여러 번의 반복과 연구를 통해로드되는 파일 중 일부는 기본 테이블 (파티션 된 테이블에 데이터를 삽입하는 데 사용되는 테이블)에 제공된 구조와 호환되지 않는 것으로 나타났습니다.

여기서 주목할 점은 파티셔닝 열의 특정 값에 대해 선택 쿼리를 실행하거나 정적 파티션을 만들 때마다 오류 레코드를 건너 뛰는 경우처럼 제대로 작동한다는 것입니다.

요약 : HIVE가 Schema-On-Read 철학을 따르므로 들어오는 데이터 / 파일의 구조화에서 불일치를 확인하십시오.


HDInsight (Azure의 Hadoop)에서 hadoop jobtracker 웹 대시 보드를 찾는 데 시간이 걸리기 때문에 여기에 정보를 추가하고 동료가 마침내 그 위치를 보여주었습니다. "Hadoop Yarn Status"라는 헤드 노드에는 로컬 http 페이지 ( 제 경우에는 http : // headnodehost : 9014 / cluster)대한 링크 인 바로 가기가 있습니다 . 대시 보드를 열었을 때 다음과 같이 보입니다.

여기에 이미지 설명 입력

해당 대시 보드에서 실패한 애플리케이션을 찾은 다음 클릭 한 후 개별지도의 로그를보고 작업을 줄일 수 있습니다.

제 경우에는 이미 구성에서 메모리를 크 랭킹 했음에도 불구하고 감속기에서 여전히 메모리가 부족한 것처럼 보였습니다 . 어떤 이유로 내가 이전에받은 "java outofmemory"오류를 표시하지 않았습니다.


The top answer is right, that the error code doesn't give you much info. One of the common causes that we saw in our team for this error code was when the query was not optimized well. A known reason was when we do an inner join with the left side table magnitudes bigger than the table on right side. Swapping these tables would usually do the trick in such cases.


I removed the _SUCCESS file from the EMR output path in S3 and it worked fine.


Even I faced the same issue - when checked on dashboard I found following Error. As the data was coming through Flume and had interrupted in between due to which may be there was inconsistency in few files.

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

Running on fewer files it worked. Format consistency was the reason in my case.


Elastic Search 클러스터를 가리키는 HIVE 외부 테이블에 데이터를 삽입 할 때도 동일한 오류가 발생했습니다.

이전 JAR elasticsearch-hadoop-2.0.0.RC1.jar을으로 교체 elasticsearch-hadoop-5.6.0.jar했고 모든 것이 잘 작동했습니다.

내 제안은 탄력적 검색 버전에 따라 특정 JAR을 사용하는 것입니다. 최신 버전의 탄력적 검색을 사용하는 경우 이전 JAR을 사용하지 마십시오.

이 게시물 덕분에 Hive- Elasticsearch 쓰기 작업 # 409

참조 URL : https://stackoverflow.com/questions/11185528/what-is-hive-return-code-2-from-org-apache-hadoop-hive-ql-exec-mapredtask

반응형