복붙노트

[HADOOP] 하둡 YARN 작업이 맵 0 %에서 멈추고 0 % 감소

HADOOP

하둡 YARN 작업이 맵 0 %에서 멈추고 0 % 감소

나는 hadoop 설정을 테스트하기 위해 매우 간단한 작업을 실행하려고하므로 Word Count Example을 사용해 보았습니다.

52191_0003/
14/07/14 23:55:51 INFO mapreduce.Job: Running job: job_1405376352191_0003
14/07/14 23:55:57 INFO mapreduce.Job: Job job_1405376352191_0003 running in uber mode : false
14/07/14 23:55:57 INFO mapreduce.Job:  map 0% reduce 0%

Google에서 빠른 조사를 수행 한 결과 증가했습니다.

yarn.scheduler.minimum-allocation-mb
yarn.nodemanager.resource.memory-mb

듀얼 노드 및 8GB Ram으로 Macbook에서 실행되는 단일 노드 클러스터가 있습니다.

my yarn-site.xml 파일-

<configuration>

<!-- Site specific YARN configuration properties -->
  <property>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>resourcemanager.company.com</value>
  </property>   
  <property>
    <description>Classpath for typical applications.</description>
    <name>yarn.application.classpath</name>
    <value>
        $HADOOP_CONF_DIR,
        $HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,
        $HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,
        $HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,
        $HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*
    </value>
  </property>

  <property>
    <name>yarn.nodemanager.local-dirs</name>
    <value>file:///data/1/yarn/local,file:///data/2/yarn/local,file:///data/3/yarn/local</value>
  </property>
  <property>
    <name>yarn.nodemanager.log-dirs</name>
    <value>file:///data/1/yarn/logs,file:///data/2/yarn/logs,file:///data/3/yarn/logs</value>
  </property>
  <property>
  </property>
    <name>yarn.log.aggregation.enable</name>
    <value>true</value> 
  <property>
    <description>Where to aggregate logs</description>
    <name>yarn.nodemanager.remote-app-log-dir</name>
    <value>hdfs://var/log/hadoop-yarn/apps</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    <description>shuffle service that needs to be set for Map Reduce to run </description>
  </property>
   <property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>
  </property>

  <property>
        <name>yarn.app.mapreduce.am.resource.mb</name>
        <value>8092</value>
    </property>
    <property>
        <name>yarn.app.mapreduce.am.command-opts</name>
        <value>-Xmx768m</value>
    </property>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
        <description>Execution framework.</description>
    </property>
    <property>
        <name>mapreduce.map.cpu.vcores</name>
        <value>4</value>
        <description>The number of virtual cores required for each map task.</description>
    </property>
    <property>
        <name>mapreduce.map.memory.mb</name>
        <value>8092</value>
        <description>Larger resource limit for maps.</description>
    </property>
    <property>
        <name>mapreduce.map.java.opts</name>
        <value>-Xmx768m</value>
        <description>Heap-size for child jvms of maps.</description>
    </property>
    <property>
        <name>mapreduce.jobtracker.address</name>
        <value>jobtracker.alexjf.net:8021</value>
    </property>

 <property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>2048</value>
    <description>Minimum limit of memory to allocate to each container request at the Resource Manager.</description>
  </property>
  <property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>8092</value>
    <description>Maximum limit of memory to allocate to each container request at the Resource Manager.</description>
  </property>
  <property>
    <name>yarn.scheduler.minimum-allocation-vcores</name>
    <value>2</value>
    <description>The minimum allocation for every container request at the RM, in terms of virtual CPU cores. Requests lower than this won't take effect, and the specified value will get allocated the minimum.</description>
  </property>
  <property>
    <name>yarn.scheduler.maximum-allocation-vcores</name>
    <value>10</value>
    <description>The maximum allocation for every container request at the RM, in terms of virtual CPU cores. Requests higher than this won't take effect, and will get capped to this value.</description>
  </property>
  <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>2048</value>
    <description>Physical memory, in MB, to be made available to running containers</description>
  </property>
  <property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>4</value>
    <description>Number of CPU cores that can be allocated for containers.</description>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    <description>shuffle service that needs to be set for Map Reduce to run </description>
  </property>
   <property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>

</configuration>

내 mapred-site.xml

  <property>    
    <name>mapreduce.framework.name</name>    
    <value>yarn</value>  
  </property>

속성이 하나만 있습니다. 여러 순열과 조합을 시도했지만 오류를 제거 할 수 없습니다.

작업 로그

 23:55:55,694 WARN [main] org.apache.hadoop.conf.Configuration: job.xml:an attempt to override final parameter: mapreduce.job.end-notification.max.retry.interval;  Ignoring.
2014-07-14 23:55:55,697 WARN [main] org.apache.hadoop.conf.Configuration: job.xml:an attempt to override final parameter: mapreduce.job.end-notification.max.attempts;  Ignoring.
2014-07-14 23:55:55,699 INFO [main] org.apache.hadoop.yarn.client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8030
2014-07-14 23:55:55,769 INFO [main] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: maxContainerCapability: 8092
2014-07-14 23:55:55,769 INFO [main] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: queue: root.abhishekchoudhary
2014-07-14 23:55:55,775 INFO [main] org.apache.hadoop.mapreduce.v2.app.launcher.ContainerLauncherImpl: Upper limit on the thread pool size is 500
2014-07-14 23:55:55,777 INFO [main] org.apache.hadoop.yarn.client.api.impl.ContainerManagementProtocolProxy: yarn.client.max-nodemanagers-proxies : 500
2014-07-14 23:55:55,787 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.JobImpl: job_1405376352191_0003Job Transitioned from INITED to SETUP
2014-07-14 23:55:55,789 INFO [CommitterEvent Processor #0] org.apache.hadoop.mapreduce.v2.app.commit.CommitterEventHandler: Processing the event EventType: JOB_SETUP
2014-07-14 23:55:55,800 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.JobImpl: job_1405376352191_0003Job Transitioned from SETUP to RUNNING
2014-07-14 23:55:55,823 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.TaskImpl: task_1405376352191_0003_m_000000 Task Transitioned from NEW to SCHEDULED
2014-07-14 23:55:55,824 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.TaskImpl: task_1405376352191_0003_m_000001 Task Transitioned from NEW to SCHEDULED
2014-07-14 23:55:55,824 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.TaskImpl: task_1405376352191_0003_m_000002 Task Transitioned from NEW to SCHEDULED
2014-07-14 23:55:55,825 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.TaskImpl: task_1405376352191_0003_m_000003 Task Transitioned from NEW to SCHEDULED
2014-07-14 23:55:55,826 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.TaskAttemptImpl: attempt_1405376352191_0003_m_000000_0 TaskAttempt Transitioned from NEW to UNASSIGNED
2014-07-14 23:55:55,827 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.TaskAttemptImpl: attempt_1405376352191_0003_m_000001_0 TaskAttempt Transitioned from NEW to UNASSIGNED
2014-07-14 23:55:55,827 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.TaskAttemptImpl: attempt_1405376352191_0003_m_000002_0 TaskAttempt Transitioned from NEW to UNASSIGNED
2014-07-14 23:55:55,827 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.TaskAttemptImpl: attempt_1405376352191_0003_m_000003_0 TaskAttempt Transitioned from NEW to UNASSIGNED
2014-07-14 23:55:55,828 INFO [Thread-49] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: mapResourceReqt:8092
2014-07-14 23:55:55,858 INFO [eventHandlingThread] org.apache.hadoop.mapreduce.jobhistory.JobHistoryEventHandler: Event Writer setup for JobId: job_1405376352191_0003, File: hdfs://localhost/tmp/hadoop-yarn/staging/abhishekchoudhary/.staging/job_1405376352191_0003/job_1405376352191_0003_1.jhist
2014-07-14 23:55:56,773 INFO [RMCommunicator Allocator] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Before Scheduling: PendingReds:0 ScheduledMaps:4 ScheduledReds:0 AssignedMaps:0 AssignedReds:0 CompletedMaps:0 CompletedReds:0 ContAlloc:0 ContRel:0 HostLocal:0 RackLocal:0
2014-07-14 23:55:56,799 INFO [RMCommunicator Allocator] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerRequestor: getResources() for application_1405376352191_0003: ask=1 release= 0 newContainers=0 finishedContainers=0 resourcelimit=<memory:0, vCores:0> knownNMs=1

해결법

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

    1./0.0.0.0:8030의 ResourceManager에 연결하는 메시지를 기반으로, ResourceManager가 0.0.0.0:8030 (기본값)이어야합니까? 그렇지 않은 경우 yarn-site.xml에 다음을 추가해야합니다.

    /0.0.0.0:8030의 ResourceManager에 연결하는 메시지를 기반으로, ResourceManager가 0.0.0.0:8030 (기본값)이어야합니까? 그렇지 않은 경우 yarn-site.xml에 다음을 추가해야합니다.

    <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>MASTER ADDRESS</value>
    </property>
    <property>
      <name>yarn.resourcemanager.resource-tracker.address</name>
      <value>${yarn.resourcemanager.hostname}:8025</value>
    </property>
    <property>
      <name>yarn.resourcemanager.scheduler.address</name>
      <value>${yarn.resourcemanager.hostname}:8030</value>
    </property>
    <property>
      <name>yarn.resourcemanager.address</name>
      <value>${yarn.resourcemanager.hostname}:8040</value>
    </property>
    <property>
      <name>yarn.resourcemanager.webapp.address</name>
      <value>${yarn.resourcemanager.hostname}:8088</value>
    </property>
    <property>
      <name>yarn.resourcemanager.admin.address</name>
      <value>${yarn.resourcemanager.hostname}:8033</value>
    </property>
    

    MASTER ADDRESS를 마스터 노드의 주소로 바꾸십시오. 자원 관리자의 webapp, admin 등의 주소를 개별적으로 변경할 수 있습니다.

  2. ==============================

    2.설정이 올바르지 않은 것 같습니다.

    설정이 올바르지 않은 것 같습니다.

    yarn.nodemanager.resource.memory-mb 설정 2GB로 설정되어 있습니다. "컨테이너에 할당 할 수있는 물리적 메모리의 양 (MB)입니다." 그러나 mapreduce.map.memory.mb는 8GB입니다. 8GB는 실제로 요청하는 것입니다.

    또한 yarn.app.mapreduce.am.resource.mb를 8GB로 설정했습니다. 따라서 8GB에서 작업을 제어하는 ​​AM과 8GB에서 여러 매퍼를 할당하려고합니다.

    해결책

    이 문제를 해결하기 위해 AM 크기를 1GB로 떨어 뜨린 다음 매퍼 크기를 .5GB로 떨어 뜨릴 수 있는데, 이는 특히 단어 수를 위해 놀기에 더 적당한 크기입니다.

    추가 자료

    Clouera에서 제공하는이 지침을 참조하여 이러한 속성을보다 자세히 이해할 수 있습니다.

  3. ==============================

    3.이 질문을 만들 때 단순히 복사 / 붙여 넣기 오류를했는지 모르겠지만 yarn-site.xml을 보면 두 개의 태그로 시작합니다. 하둡의 XML 파서가 실제로 중첩 된 태그를 적용할지 확실하지 않습니다.

    이 질문을 만들 때 단순히 복사 / 붙여 넣기 오류를했는지 모르겠지만 yarn-site.xml을 보면 두 개의 태그로 시작합니다. 하둡의 XML 파서가 실제로 중첩 된 태그를 적용할지 확실하지 않습니다.

  4. ==============================

    4.Apache Hadoop 버전 2.7.2를 사용하고 있으므로 "애플-오렌지"비교와 비슷할 수 있지만, 다른 날에는 같은 자동 멈춤 상태에 빠졌습니다. 대부분의 경우,이 "자동"은 오랜 시간 동안 스케줄러가 애플리케이션에 충분한 자원을 할당 할 수 없음을 나타냅니다.

    Apache Hadoop 버전 2.7.2를 사용하고 있으므로 "애플-오렌지"비교와 비슷할 수 있지만, 다른 날에는 같은 자동 멈춤 상태에 빠졌습니다. 대부분의 경우,이 "자동"은 오랜 시간 동안 스케줄러가 애플리케이션에 충분한 자원을 할당 할 수 없음을 나타냅니다.

    비슷한 구성을 가진 특정 경우에는 yarn-site.xml의 yarn.nodemanager.resource.memory-mb 속성 값을 늘리면 트릭이 발생했습니다.

    여기에서 리소스 할당에 대한 다른 속성을 확인할 수도 있습니다.

  5. from https://stackoverflow.com/questions/24747427/hadoop-yarn-job-is-getting-stucked-at-map-0-and-reduce-0 by cc-by-sa and MIT license