복붙노트

[HADOOP] Hadoop Mapper가 "ApplicationMaster에 의해 종료 된 컨테이너"로 인해 실패했습니다.

HADOOP

Hadoop Mapper가 "ApplicationMaster에 의해 종료 된 컨테이너"로 인해 실패했습니다.

Hadoop에서 맵 축소 프로그램을 실행하려고합니다.

내가 hadoop 단일 노드 클러스터에 내 작업을 제출할 때. 작업이 생성 중이지만 메시지로 실패합니다.

"ApplicationMaster에 의해 죽은 컨테이너"

사용 된 입력 크기는 10MB입니다.

입력 파일 400 KB의 동일한 스크립트를 사용하면 성공했습니다. 그러나 크기가 10MB 인 입력 파일에 대해서는 실패합니다.

내 터미널에 표시되는 전체 로그는 다음과 같습니다.

    15/05/29 09:52:16 WARN util.NativeCodeLoader: Unable to `load native-  hadoop library for your platform... using builtin-java classes      where applicable
Submitting job on the cluster...
15/05/29 09:52:17 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
15/05/29 09:52:18 INFO input.FileInputFormat: Total input paths to process : 1
15/05/29 09:52:18 INFO mapreduce.JobSubmitter: number of splits:1
15/05/29 09:52:19 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1432910768528_0001
15/05/29 09:52:19 INFO impl.YarnClientImpl: Submitted application application_1432910768528_0001
15/05/29 09:52:19 INFO mapreduce.Job: The url to track the job: http://localhost:8088/proxy/application_1432910768528_0001/
15/05/29 09:52:19 INFO mapreduce.Job: Running job: job_1432910768528_0001
15/05/29 09:52:29 INFO mapreduce.Job: Job job_1432910768528_0001 running in uber mode : false
15/05/29 09:52:29 INFO mapreduce.Job:  map 0% reduce 0%
15/05/29 09:52:41 INFO mapreduce.Job:  map 100% reduce 0%
15/05/29 10:03:01 INFO mapreduce.Job:  map 0% reduce 0%
15/05/29 10:03:01 INFO mapreduce.Job: Task Id : attempt_1432910768528_0001_m_000000_0, Status : FAILED
AttemptID:attempt_1432910768528_0001_m_000000_0 Timed out after 600 secs
Container killed by the ApplicationMaster.
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143

내 매퍼가 여기 내 입력 파일을 처리 할 다른 프로그램을 실행 중입니다. 매퍼에 의해 트리거를 얻는 프로그램은 대개 많은 메모리를 소비합니다.

그러니 제발 도와주세요.

해결법

  1. ==============================

    1.yarn-site.xml에 아래 등록 정보를 포함하고 VM을 다시 시작합니다.

    yarn-site.xml에 아래 등록 정보를 포함하고 VM을 다시 시작합니다.

    <property>
       <name>yarn.nodemanager.vmem-check-enabled</name>
       <value>false</value>
       <description>Whether virtual memory limits will be enforced for containers</description>
    </property>
    
    <property>
       <name>yarn.nodemanager.vmem-pmem-ratio</name>
       <value>4</value>
       <description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
    </property>
    
  2. ==============================

    2.컨테이너는 JVM 프로세스입니다. Mapreduce에서 응용 프로그램 마스터 서비스, 매퍼 및 감속기 작업은 원사 프레임 워크 내에서 실행되는 모든 컨테이너입니다.

    컨테이너는 JVM 프로세스입니다. Mapreduce에서 응용 프로그램 마스터 서비스, 매퍼 및 감속기 작업은 원사 프레임 워크 내에서 실행되는 모든 컨테이너입니다.

    감속기 수를 늘리거나 (mapreduce.job.reduces = 10) 또는 힙 크기 줄이기 (mapreduce.reduce.java.opts = -Xmx2014m)를 사용하여이 문제를 해결할 수 있습니다.

    런타임에 일정 수의 감속기를 원할 경우 명령 줄에서 Map / Reduce 작업을 통과하는 동안 감속기를 사용할 수 있습니다. -D mapreduce.job.reduces = 10을 원하는 숫자와 함께 사용하면 런타임에 많은 수의 축소 기가 생성됩니다.

    이 코드에서는 매퍼 및 리듀서 수를 설정하기 위해 JobConf 변수를 구성 할 수 있습니다. Job으로 JobConf 변수가 있다고 가정 해 봅시다.

    Configuration conf = new Configuration();
    Job job = new Job(conf);
    job.setNumReduceTasks(10); // 10 reducers
    

    메모리 문제를 피하기 위해이 특정 작업을 위해 파일을 더 작은 크기로 분할 할 수도 있습니다.

    여전히 문제가 발생하는 경우 원사 로그를 확인하고 로그를 게시하십시오.

  3. from https://stackoverflow.com/questions/30533501/hadoop-mapper-is-failing-because-of-container-killed-by-the-applicationmaster by cc-by-sa and MIT license