2017-10-05 3 views
0

GC 오버 헤드 오류를 해결하는 데 도움을 줄 수 있습니까?원인 : java.lang.OutOfMemoryError : GC 오버로드 한도를 초과했습니다.

배경 : HCATALOGUE를 통해 4 개의 하이브 테이블에서 데이터를로드하는 돼지 스크립트입니다. 하이브 테이블은 시퀀스 파일에 있으며 날짜별로 분할됩니다. 로드 데이터 크기는 약입니다. 24TB.

이 스크립트는 16TB에서 성공적으로 실행되었습니다.

문제 : 하이브에서 데이터를 읽는 동안 작업이 실패합니다. 이지도 축소를 위해 응용 프로그램 ID가 제출되지 않고 응용 프로그램 ID가 제출되기 전에 오류가 발생합니다. 따라서 YARN에서 로그를 찾을 수 없습니다.

yarn.app.mapreduce.am.resource.mb를 mapreduce.map.memory.mb (6GB), mapreduce.map.java.opts (6GB의 0.8 %), mapreduce.reduce로 수정하려고했습니다. memory.mb (8GB) 및 mapreduce.reduce.java.opts. 그리고 여전히 같은 오류가 발생합니다.

이 문제에 대한 도움이 필요하십니까?

감사합니다.

답변

0

두 가지 구성이 필요합니다. 변경해야합니다.

1.-XX : + UseConcMarkSweepGC = GC를 더 자주 만듭니다.

  1. -XX : -UseGCOverheadLimit = 더 긴 시간 동안 기다려도 컨테이너가 중지됩니다.

하이브 콘솔에서이 작업을 실행하면 좋을 것입니다.

하이브>SET mapred.child.java.opts=-Xmx4G -XX:+UseConcMarkSweepGC -XX:-UseGCOverheadLimit;