用户会根据自己的作业需求来区分集群资源的分配情况
我的需求是Oozie周期调度多Spark作业,需要动态使用Yarn资源
CDH版本:5.6.0
-
关闭允许未声明的池 yarn.scheduler.fair.allow-undeclared-pools
搜索
yarn.scheduler.fair.allow-undeclared-pools
,默认为true,需要配置成false,设置为 true 时,将使用默认设置创建在应用程序中指定但未明确配置的池。设置为 false 时,将在名为 default 的池中运行应用程序指定的未明确配置的池。此设置适用于应用程序明确指定某个池时以及应用程序运行所在的池的名称为与该应用程序关联的用户名的情况。 -
关闭使用默认队列时的 Fair Scheduler 用户 yarn.scheduler.fair.user-as-default-queue
搜索
yarn.scheduler.fair.user-as-default-queue
,并设置为False,当设置为 true 时,如果未指定池名称,Fair Scheduler 将会使用用户名作为默认的池名称。当设置为 false 时,所有应用程序都在一个名为 default 的共享池中运行。 -
进入动态资源池页面
YARN -> 快速链接 -> 动态资源池
现在已有default和hdfs资源池
-
添加oozie资源池
配置 -> 添加资源池
弹出配置框,填上oozie,选择DRF策略,并在Yarn中配置权重,根据需求配置,因为oozie只涉及Launcher MR,所以,一般权值填上1,最大应用程序数量设为10。
确认
-
如果有实际需求,请设置计划模式,来根据时间、日期等设置不同的策略,因为本人没有需求,这里不再说明
-
在Oozie中配置资源池,也就是queue的名称
在对应的workflow.xml文件中加入如下配
<property> <name>oozie.launcher.mapred.job.queue.name</name <value>root.oozie</value> </property> <property> <name>mapred.job.queue.name</name> <value>default</value> </property>
启动oozie作业,可以看到资源池的使用已经按照新的配置执行
over