CDH配置YARN动态资源分配

场景:根据不同项目或不同用户,对yarn资源队列进行划分,达到资源管控,任务管控的目的

yarn资源队列参数设置

当设置为 true 时,如果未指定池名称,Fair Scheduler 将会使用用户名作为默认的池名称,当设置为 false 时,所有应用程序都在一个名为 default 的共享池中运行,设置成false是为了不根据用户名而自动分配资源池

yarn.scheduler.fair.user-as-default-queue false

设置为 true 时,将使用默认设置创建在应用程序中指定但未明确配置的池,设置为 false 时,将在名为 default 的池中运行应用程序指定的未明确配置的池
此设置适用于应用程序明确指定某个池时以及应用程序运行所在的池的名称为与该应用程序关联的用户名的情况

yarn.scheduler.fair.allow-undeclared-pools false

确定哪些用户和组可在任何池中提交和中止应用程序以及可以对 ResourceManager 角色发出命令的 AC,默认是*(所有用户都可以终止任务)

启用 ResourceManager ACL  true

yarn.admin.acl            yarn

修改完配置重启服务

创建测试用户

useradd heboan
passwd heboan

useradd dev
passwd dev

hdfs dfs -mkdir /user/heboan
hdfs dfs -chown heboan:heboan /user/heboan

hdfs dfs -mkdir /user/dev
hdfs dfs -chown dev:dev /user/dev

su - heboan
echo "Hello World Bye World" > file0
echo "Hello Hadoop Goodbye Hadoop" > file1
hdfs dfs -mkdir -p /user/heboan/wordcount/input
hdfs dfs -put file* /user/heboan/wordcount/input

su - dev
echo "Hello World Bye World" > file0
echo "Hello Hadoop Goodbye Hadoop" > file1
hdfs dfs -mkdir -p /user/dev/wordcount/input
hdfs dfs -put file* /user/dev/wordcount/input

动态资源配置

默认划分了2个资源池
root.default: 默认池,没有划分资源池的用户会提交到default资源池
root.user: 暂时没了解

①编辑root
提交访问控制: 允许这些用户和组向该池提交: 用户: yarn
管理访问空: Allow these users and groups to administer this pool 用户:hdfs

②编辑root.default
提交访问控制: 允许这些用户和组向该池提交 用户: 允许提交的用户名,多个以逗号分隔,这里我配置的是heboan,dev
管理访问控制: Allow these users and groups to administer this pool, 直接继承

③创建2个资源池root.dev和root.heboan
提交访问控制分别设置各自的用户dev ,heboan
管理访问控制直接继承

备注:资源池权重数值越大,与优先

刷新动态资源

测试用户heboan提交任务

su - heboan
可以正常提交到root.heboan资源池

hadoop jar /opt/cloudera/parcels/CDH/jars/hadoop-examples.jar wordcount -Dmapreduce.job.queuename=root.heboan wordcount/input wordcount/output

可以正常提交到root.default资源池

hadoop jar /opt/cloudera/parcels/CDH/jars/hadoop-examples.jar wordcount -Dmapreduce.job.queuename=root.default wordcount/input wordcount/output

无法提交的root.dev资源池

hadoop jar /opt/cloudera/parcels/CDH/jars/hadoop-examples.jar wordcount -Dmapreduce.job.queuename=root.dev wordcount/input wordcount/output

su - dev
结果同理
因为配置了只是允许yarn管理所有的资源池,并且资源池直接继承,hdfs用户才能管理,所以heboan提交的任务只能被自己删除,或者yarn/hdfs, 当然dev提交的任务也是同理

原文地址:https://www.cnblogs.com/sellsa/p/11238250.html