我一直在为YARN容量调度程序使用以下配置:
yarn.scheduler.capacity.maximum-am-resource-percent=0.2
yarn.scheduler.capacity.maximum-applications=10000
yarn.scheduler.capacity.node-locality-delay=40
yarn.scheduler.capacity.root.capacity=100
yarn.scheduler.capacity.root.queues=tier1,tier2
yarn.scheduler.capacity.root.tier1.capacity=65
yarn.scheduler.capacity.root.tier1.maximum-capacity=75
yarn.scheduler.capacity.root.tier1.state=RUNNING
yarn.scheduler.capacity.root.tier2.capacity=35
yarn.scheduler.capacity.root.tier2.maximum-capacity=75
yarn.scheduler.capacity.root.tier2.state=RUNNING
yarn.scheduler.capacity.root.tier1.acl_submit_applications=user1
yarn.scheduler.capacity.root.tier2.acl_submit_applications=user2
根据我对容量调度程序的理解,当我使用 user1 运行作业时,它应该使用 tier1队列,当我运行用户 user2 已登录(或使用sudo-user2显式登录),它应使用 tier2队列。但是,系统没有使用这些队列。
我遇到的第二个问题描述如下:
user1 应该无法按照上述配置将作业提交到 tier2 队列。
user2 应该无法按照上述配置将作业提交到** tier ** 1队列。
当我运行以下命令时:
sudo -u user1 hdfs yarn jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples-2.4.0.2.1.2.1-471.jar pi -D mapreduce.job.queuename=tier2 2 100000
作业成功运行,情况并非如此。
请建议可能的解决方法。
答案 0 :(得分:0)
在scheduler.capacity.xml文件中使用以下属性
yarn.scheduler.capacity.root.it.user-limit-factor=2
yarn.scheduler.capacity.root.price.user-limit-factor=1