복붙노트

[HADOOP] 아파치 하둡 얀 - 코어의 활용도 낮춤

HADOOP

아파치 하둡 얀 - 코어의 활용도 낮춤

yarn-site.xml의 설정을 어느 정도 조정했는지, 즉 아래의 모든 옵션을 사용하더라도

yarn.scheduler.minimum-allocation-vcores
yarn.nodemanager.resource.memory-mb
yarn.nodemanager.resource.cpu-vcores
yarn.scheduler.maximum-allocation-mb
yarn.scheduler.maximum-allocation-vcores

난 아직도 내 응용 프로그램을 얻을 수 없다 즉 스파크 클러스터의 모든 코어를 활용합니다. 스파크 집행자는 사용 가능한 모든 메모리를 올바르게 차지하는 것처럼 보이지만 각각의 집행자는 계속해서 하나의 코어 만 가지고 계속 유지합니다.

다음은 spark-defaults.conf에 구성된 옵션입니다.

spark.executor.cores                    3
spark.executor.memory                   5100m
spark.yarn.executor.memoryOverhead      800
spark.driver.memory                     2g
spark.yarn.driver.memoryOverhead        400
spark.executor.instances                28
spark.reducer.maxMbInFlight             120
spark.shuffle.file.buffer.kb            200

spark.executor.cores는 3으로 설정되어 있지만 작동하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?

해결법

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

    1.문제는 yarn-site.xml이나 spark-defaults.conf가 아니라 executor에게 코어를 할당하는 리소스 계산기 또는 MapReduce 작업의 경우 Mappers / Reducers에 있습니다.

    문제는 yarn-site.xml이나 spark-defaults.conf가 아니라 executor에게 코어를 할당하는 리소스 계산기 또는 MapReduce 작업의 경우 Mappers / Reducers에 있습니다.

    기본 리소스 계산기 인 org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator는 컨테이너를 할당하기 위해 메모리 정보 만 사용하며 CPU 예약은 기본적으로 사용되지 않습니다. 메모리와 CPU를 모두 사용하려면 리소스 계산기를 capacity-scheduler.xml 파일의 org.apache.hadoop.yarn.util.resource.DominantResourceCalculator로 변경해야합니다.

    다음은 변경해야 할 사항입니다.

    <property>
        <name>yarn.scheduler.capacity.resource-calculator</name>
        <value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
    </property>
    
  2. ==============================

    2.비슷한 종류의 문제가 있었고 코드에서 스파크를 설정했습니다. 실행자 .5로 표시됩니다. 비록 그것은 단지 기본 코어 인 1을 사용하고 있었지만. 스파크 UI 및 환경 탭에서 나는 5 개의 코어를보고있었습니다. 그러나 집행자 탭을 확인하는 동안 나는 1 개의 프로세스가 실행 프로그램에 대해 실행 상태에 있다는 것을 알 수있었습니다. 스파크 버전 1.6.3을 사용하고있었습니다.

    비슷한 종류의 문제가 있었고 코드에서 스파크를 설정했습니다. 실행자 .5로 표시됩니다. 비록 그것은 단지 기본 코어 인 1을 사용하고 있었지만. 스파크 UI 및 환경 탭에서 나는 5 개의 코어를보고있었습니다. 그러나 집행자 탭을 확인하는 동안 나는 1 개의 프로세스가 실행 프로그램에 대해 실행 상태에 있다는 것을 알 수있었습니다. 스파크 버전 1.6.3을 사용하고있었습니다.

    그래서 spark-submit 명령을 다음과 같이 치려고했습니다. --conf spark.executor.cores = 5 5 코어를 사용하는 것으로 정상적으로 작동합니다.

    또는 단지

    --executor-core 5 또한 작동합니다.

  3. from https://stackoverflow.com/questions/29964792/apache-hadoop-yarn-underutilization-of-cores by cc-by-sa and MIT license