YARN에서 실행 중일 때 Spark 작업에서 메모리 제한을 초과하여 여러 컨테이너가 삭제되는 문제가 있습니다.SPARK : YARN이 컨테이너를 초과하여 메모리 제한을 초과합니다.
16/11/18 17:58:52 WARN TaskSetManager: Lost task 53.0 in stage 49.0 (TID 32715, XXXXXXXXXX):
ExecutorLostFailure (executor 23 exited caused by one of the running tasks)
Reason: Container killed by YARN for exceeding memory limits. 12.4 GB of 12 GB physical memory used.
Consider boosting spark.yarn.executor.memoryOverhead.
다음 인수를 통해 전달되는 스파크 제출 : 나는 불꽃 2.0.1을 사용하고
--executor-memory=6G
--driver-memory=4G
--conf "spark.yarn.executor.memoryOverhead=6G"`
.
YARN 킬링 컨테이너에 대한 여러 게시물 (예 : How to avoid Spark executor from getting lost and yarn container killing it due to memory limit?)을 읽은 후 memoryOverhead를이 값으로 늘렸습니다.
내 매개 변수와 로그 메시지가 주어지면 "실은 메모리 사용량이 (executor-memory + executor.memoryOverhead)보다 클 경우 실행 프로그램을 종료합니다"라는 메시지가 표시됩니다.
결국 이러한 오류가 발생하지 않는 값을 찾기 위해이 오버 헤드를 계속 늘리는 것은 현실적이지 않습니다. 우리는이 문제를 몇 가지 다른 직업에서보고 있습니다. 나는 내가 바꿔야 할 것들, 수정해야 할 것들, 디버깅을 시작해야 할 곳 등을 제안 해 주시면 감사하겠습니다.
Spark SQL을 사용합니까? –
예, 광범위하게 – user2682459
거대한 데이터 세트를 사용할 때'spark-defaults.conf'의'spark.default.parallelism'과'spark.sql.shuffle.partitions'를 더 높은 값으로 늘리려고 할 수 있습니다. 이렇게하면 메모리 사용량이 줄어 듭니다. –