我在YARN中使用了容量调度程序,并且看到用户可以通过使用属性'yarn minimum-user-limit-percent'获得最小队列百分比。我将此属性设置为20,据此,我希望资源将平均分配给5个用户:
https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.1/bk_yarn-resource-management/content/setting_user_limits.html
但是,当用户启动Runnig应用程序时,情况并非如此。例如,如果我在队列空闲时运行应用程序,则YARN会为该应用程序分配所有请求的资源。之后,当另一个用户运行相同的应用程序时,YARN分配的资源与队列中剩余的资源一样多,并且队列被填满。在这一点上,我认为有了该属性,第二个用户将获得队列的50%,而第一个用户将拥有更少的资源。
如果有第三位用户进入,我希望他/她获得33%的队列,但是YARN甚至没有安排应用程序,因为没有可用的资源了。
我想念什么吗?我认为该参数使请求独立于可用资源,直到达到每个用户的最小百分比。
这是我的yarn-site.xml和Capacity-scheduler.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-default-queue
真正
yarn 调度程序公平抢占
假
基于 yarn 计划的公平大小的重量
假
yarn.scheduler.fair.assignmultiple
假
yarn.resourcemanager.max-completed-applications
10000
yarn.nodemanager.aux-services
spark_shuffle
yarn.nodemanager.aux-services.spark_shuffle.class
org.apache.spark.network.yarn.YarnShuffleService
yarn.scheduler.capacity.root.queues
批处理,笔记本
控制台和批处理作业(批处理)和笔记本作业(笔记本)队列的定义
yarn.scheduler.capacity.root.batch.capacity
50
root.batch队列的容量百分比
yarn.scheduler.capacity.root.notebook.capacity
50
root.notebook队列的容量百分比
yarn 计划容量最大根批次最大容量
55
root.batch队列的最大容量百分比
yarn.scheduler.capacity.root.notebook。最大容量
55
root.notebook队列的最大容量百分比
yarn.scheduler.capacity.root.batch.state
正在运行
root.batch提示的当前状态
yarn.scheduler.capacity.root.notebook.state
正在运行
root.notebook提示的当前状态
yarn.scheduler.capacity.root.acl_submit_applications
hadoop,纱,mapred,hdfs, Spark
谁可以将作业提交到根队列的ACL。
yarn.scheduler.capacity.root.batch.acl_submit_applications
scienceUser1 root,gaia,ub,ucm,uac,udc,esac,upo,une,inaf
谁可以将作业提交到root.batch队列的ACL。
yarn.scheduler.capacity.root.notebook.acl_submit_applications
* root,gaia,ub,ucm,uac,udc,esac,upo,une,inaf
谁可以将作业提交到root.notebook队列的ACL。
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-calculator
org.apache.hadoop.yarn.util.resource.DominantResourceCalculator
yarn.scheduler.capacity.root.notebook.minimum-user-limit-percent
33
用户从队列中获取的资源的最小百分比。
最佳答案
如果您尚未启用抢占,则您看到的行为是正确的。
在yarn-site.xml中查找等于yarn.resourcemanager.scheduler.monitor.enable
的true
,以查看是否已启用它。
如果尚未启用,请参考以下内容以获取指导:
关于hadoop - YARN最小用户限制百分比不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45659571/