복붙노트

[HADOOP] Hadoop 클러스터에서 자원의 동적 자체 할당을 제한하는 방법

HADOOP

Hadoop 클러스터에서 자원의 동적 자체 할당을 제한하는 방법

원사에서 실행되는 Hadoop 클러스터에서 pySpark Jupyter 노트북에서 Spark 작업을 구성하여 "더 똑똑한"사람들이 상당히 많은 자원을 사용할 수 있다는 문제가 있습니다.

conf = (SparkConf()
        .setAppName("name")
        .setMaster("yarn-client")
        .set("spark.executor.instances", "1000")
        .set("spark.executor.memory", "64g")
        )

sc = SparkContext(conf=conf)

이것은 사람들이 글자 그대로 다른 사람들을 덜 "더 똑똑하게"짜내는 상황에 이르게합니다.

사용자가 자원을 스스로 할당하고 자원 할당을 얀에만 맡기는 것을 금지하는 방법이 있습니까?

해결법

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

    1.YARN은 대기열별로 다중 테넌트 클러스터에서 용량 계획을 매우 잘 지원합니다. YARN ResourceManager는 기본적으로 CapacityScheduler를 사용합니다.

    YARN은 대기열별로 다중 테넌트 클러스터에서 용량 계획을 매우 잘 지원합니다. YARN ResourceManager는 기본적으로 CapacityScheduler를 사용합니다.

    여기 우리는 데모 목적을 위해 spark submit에 대기열 이름을 alpha로 취하고 있습니다.

    $ ./bin/spark-submit --class path/to/class/file \
        --master yarn-cluster \
        --queue alpha \
        jar/location \
        args
    

    대기열 설정 :

    CapacityScheduler에는 root라는 미리 정의 된 대기열이 있습니다. 시스템의 모든 큐는 루트 큐의 하위입니다. capacity-scheduler.xml에서 매개 변수 yarn.scheduler.capacity.root.queues는 하위 큐를 정의하는 데 사용됩니다.

    예를 들어, 3 개의 대기열을 작성하려면 대기열의 이름을 쉼표로 구분 된 목록으로 지정하십시오.

    <property>
        <name>yarn.scheduler.capacity.root.queues</name>
        <value>alpha,beta,default</value>
        <description>The queues at the this level (root is the root queue).</description>
    </property>
    

    용량 계획에서 고려해야 할 중요한 특성은 거의 없습니다.

    <property>
        <name>yarn.scheduler.capacity.root.alpha.capacity</name>
        <value>50</value>
        <description>Queue capacity in percentage (%) as a float (e.g. 12.5). The sum of capacities for all queues, at each level, must be equal to 100. Applications in the queue may consume more resources than the queue’s capacity if there are free resources, providing elasticity.</description>
    </property>
    
    <property>
        <name>yarn.scheduler.capacity.root.alpha.maximum-capacity</name>
        <value>80</value>
        <description>Maximum queue capacity in percentage (%) as a float. This limits the elasticity for applications in the queue. Defaults to -1 which disables it.</description>
    </property>
    
    <property>
        <name>yarn.scheduler.capacity.root.alpha.minimum-capacity</name>
        <value>10</value>
        <description>Each queue enforces a limit on the percentage of resources allocated to a user at any given time, if there is demand for resources. The user limit can vary between a minimum and maximum value. The former (the minimum value) is set to this property value and the latter (the maximum value) depends on the number of users who have submitted applications. For e.g., suppose the value of this property is 25. If two users have submitted applications to a queue, no single user can use more than 50% of the queue resources. If a third user submits an application, no single user can use more than 33% of the queue resources. With 4 or more users, no user can use more than 25% of the queues resources. A value of 100 implies no user limits are imposed. The default is 100. Value is specified as a integer.</description>
    </property>
    

    링크 : YARN CapacityScheduler 대기열 등록 정보

  2. from https://stackoverflow.com/questions/39999015/how-to-limit-dynamic-self-allocation-of-resources-in-hadoop-cluster-under-yarn by cc-by-sa and MIT license