2017-08-13 70 views
1

我在YARN中使用容量調度程序,我發現用戶可以通過使用屬性'yarn minimum-user-limit-percent'來獲得隊列的最小百分比。我將此屬性設置爲20,和我期望的是,資源將得到均勻分佈的多達5個用戶,根據此:YARN minimum-user-limit-percent not working?

https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.1/bk_yarn-resource-management/content/setting_user_limits.html

但是,這不是當用戶啓動運行過程中出現的應用程序的情況。例如,如果我在隊列空閒時運行應用程序,YARN會爲該應用程序分配所有請求的資源。當另一個用戶之後運行相同的應用程序時,YARN將分配儘可能多的資源,因爲隊列中剩下的資源將被填滿。在這一點上,我認爲對於這個屬性,第二個用戶將獲得隊列的50%,而第一個用戶將擁有更少的資源。

如果第三位用戶進來,我希望他/她得到33%的隊列,但YARN甚至沒有安排應用程序,因爲沒有可用的資源。

我錯過了什麼嗎?我認爲這個參數提出了獨立於可用資源的請求,直到它達到每個用戶的最低百分比。

這裏是我的紗線的site.xml和能力scheduler.xml:

  • 紗的site.xml

    <configuration> 
        <property> 
        <name>yarn.acl.enable</name> 
        <value>true</value> 
        </property> 
        <property> 
        <name>yarn.admin.acl</name> 
        <value>*</value> 
        </property> 
        <property> 
        <name>yarn.resourcemanager.address</name> 
        <value>hadoopLogin:8032</value> 
        </property> 
        <property> 
        <name>yarn.resourcemanager.admin.address</name> 
        <value>hadoopLogin:8033</value> 
        </property> 
        <property> 
        <name>yarn.resourcemanager.scheduler.address</name> 
        <value>hadoopLogin:8030</value> 
        </property> 
        <property> 
        <name>yarn.resourcemanager.resource-tracker.address</name> 
        <value>hadoopLogin:8031</value> 
        </property> 
        <property> 
        <name>yarn.resourcemanager.webapp.address</name> 
        <value>hadoopLogin:8088</value> 
        </property> 
        <property> 
        <name>yarn.resourcemanager.webapp.https.address</name> 
        <value>hadoopLogin:8090</value> 
        </property> 
        <property> 
        <name>yarn.resourcemanager.client.thread-count</name> 
        <value>50</value> 
        </property> 
        <property> 
        <name>yarn.resourcemanager.scheduler.client.thread-count</name> 
        <value>50</value> 
        </property> 
        <property> 
        <name>yarn.resourcemanager.admin.client.thread-count</name> 
        <value>1</value> 
        </property> 
        <property> 
        <name>yarn.scheduler.minimum-allocation-mb</name> 
        <value>1024</value> 
        </property> 
        <property> 
        <name>yarn.scheduler.increment-allocation-mb</name> 
        <value>512</value> 
        </property> 
        <property> 
        <name>yarn.scheduler.maximum-allocation-mb</name> 
        <value>14336</value> 
        </property> 
        <property> 
        <name>yarn.scheduler.minimum-allocation-vcores</name> 
        <value>1</value> 
        </property> 
    <property> 
        <name>yarn.scheduler.increment-allocation-vcores</name> 
        <value>1</value> 
        </property> 
        <property> 
        <name>yarn.scheduler.maximum-allocation-vcores</name> 
        <value>32</value> 
        </property> 
        <property> 
        <name>yarn.resourcemanager.amliveliness-monitor.interval-ms</name> 
        <value>1000</value> 
        </property> 
        <property> 
        <name>yarn.am.liveness-monitor.expiry-interval-ms</name> 
        <value>600000</value> 
        </property> 
        <property> 
        <name>yarn.resourcemanager.am.max-attempts</name> 
        <value>2</value> 
        </property> 
        <property> 
        <name>yarn.resourcemanager.container.liveness-monitor.interval-ms</name> 
        <value>600000</value> 
        </property> 
        <property> 
        <name>yarn.resourcemanager.nm.liveness-monitor.interval-ms</name> 
        <value>1000</value> 
        </property> 
        <property> 
        <name>yarn.nm.liveness-monitor.expiry-interval-ms</name> 
        <value>600000</value> 
        </property> 
        <property> 
        <name>yarn.resourcemanager.resource-tracker.client.thread-count</name> 
        <value>50</value> 
        </property> 
        <property> 
        <name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value> 
    

    yarn.scheduler.fair.user-AS-默認隊列 true yarn.scheduler.fair.preemption false yarn.scheduler.fair.sizebasedweight 假 yarn.scheduler.fair.assignmultiple 假 yarn.resourcemanager.max完成的應用程序 yarn.nodemanager.aux服務 spark_shuffle yarn.nodemanager.aux-services.spark_shuffle.class org.apache.spark.network.yarn.YarnShuffleService

  • 能力scheduler.xml

    yarn.scheduler.capacity.root.queues 批次,筆記本 控制檯和批處理作業(批)和筆記本電腦的工作(筆記本)的定義排隊

    yarn.scheduler.capacity.root.batch.capacity 容量的百分比爲root.batch隊列

    yarn.scheduler.capacity.root.notebook。容量的容量百分比爲root.notebook隊列

    yarn.scheduler.capacity.root.batch.maximum容量的最大容量的百分比爲root.batch隊列

    紗.scheduler.capacity.root.notebook.maximum容量的最大容量的百分比爲root.notebook隊列

    yarn.scheduler.capacity.root.batch.state RUNNING 電流root.batch線索

    yarn.scheduler.capacity.root.notebook.state RUNNING 電流的根的狀態的狀態。筆記本線索

    yarn.scheduler.capacity.root.acl_submit_applications 的Hadoop,紗,mapred,HDFS,火花 誰可以將作業提交到根隊列的ACL。

    yarn.scheduler.capacity.root.batch.acl_submit_applications scienceUser1根,蓋亞,UB,UCM,UAC,UDC,ESAC,UPO,UNE,國家天體物理研究所 誰可以將作業提交到根目錄的訪問控制列表。批處理隊列。

    yarn.scheduler.capacity.root.notebook.acl_submit_applications *根,蓋亞,UB,UCM,UAC,UDC,ESAC,UPO,UNE,國家天體物理研究所 誰可以將作業提交到根目錄的訪問控制列表。筆記本隊列。

    yarn.scheduler.capacity.root.batch.acl_administer_queue 蓋亞 的誰可以管理工作的root.batch隊列的ACL。

    yarn.scheduler.capacity.root.notebook.acl_administer_queue 蓋亞 的誰可以管理工作的root.notebook隊列的ACL。

    yarn.scheduler.capacity.root.acl_administer_queue 蓋亞 的誰可以管理上的根隊列中的作業的ACL。

    yarn.scheduler.capacity.root.acl_administer_queue 蓋亞 的誰可以管理上的根隊列中的作業的ACL。

    yarn.scheduler.capacity.root.acl_administer_queue 蓋亞 的誰可以管理上的根隊列中的作業的ACL。

    yarn.scheduler.capacity.root.batch.acl_administer_queue 蓋亞 的誰可以管理在批處理隊列中的作業的ACL。

    yarn.scheduler.capacity.root.notebook.acl_administer_queue 蓋亞 的誰可以管理對筆記本隊列中的作業的ACL。

    yarn.scheduler.capacity.resource計算器 org.apache.hadoop.yarn.util.resource.DominantResourceCalculator

    yarn.scheduler.capacity.root.notebook.minimum用戶限制-percent 用戶從隊列中獲取的資源的最小百分比。

+0

請支持紗構造詳情。 yarn-site.xml和capacity-schedule.xml – shawn

回答

0

,如果你沒有啓用搶佔你看到的行爲是正確的。 查看您的yarn-site.xml中的yarn.resourcemanager.scheduler.monitor.enable等於true,看看您是否啓用了它。

如果您還沒有啓用它,請參閱指導以下幾點:

+0

感謝您的答案@ tk421!我嘗試通過將yarn.resourcemanager.scheduler.monitor.enable設置爲true來啓用容器搶佔,但行爲仍然是相同的......我使用hadoop 2.6.0,並且在容量調度程序文檔中沒有看到容器搶佔: https://hadoop.apache.org/docs/r2.6.0/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html 然而,他們確實提到yarn.scheduler.capacity..minimum-用戶限制百分比......我錯過了什麼?謝謝! –

+0

如果沒有看到您的配置文件,我無法確定任何內容。你可以用你的yarn-site.xml和capacity-scheduler.xml來更新你的問題嗎? – tk421

+0

再次感謝!我在問題中添加了我的yarn-site.xml和capacity-scheduler.xml文件。 –