1、Yarn资源队列参数设置
1)yarn.scheduler.fair.user-as-default-queue false
解释:当设置为 true(选定为true)时,如果未指定池名称,Fair Scheduler 将会使用用户名作为默认的池名称。
当设置为 false 时,所有应用程序都在一个名为 default 的共享池中运行。
设置成false是为了不根据用户名而自动分配资源池。
2)yarn.scheduler.fair.allow-undeclared-pools false
解释:设置为 true 时,将使用默认设置创建在应用程序中指定但未明确配置的池。
设置为 false 时,将在名为 default 的池中运行应用程序指定的未明确配置的池。
此设置适用于应用程序明确指定某个池时以及应用程序运行所在的池的名称为与该应用程序关联的用户名的情况。
修改完配置YARN重启服务。
2、CDH 动态资源队列配置
集群–>动态资源池配置
1)default默认池:没有划分资源池的用户会提交到default资源池
a. 这里权重为10%,default:users 资源成1:9;
b. 这里不要设置为父池,一定要保证为叶子节点即子池,不然提交不了任务;
c. CPU:计划策略这里我采用的都是DRF,即根据内存和CPU进行资源调度;
d. 提交访问控制:配置用户权限,配置哪些用户有权限提交任务,注意用逗号分隔(可默认不配);
e. 管理访问控制:配置用户对资源池的管理权限,注意用逗号分开(可默认不配);
权重解释:定义了资源池之间分配资源的比例!目前集群中的default资源池和users资源池的权重各为1,那么集群中的资源会将50%分配给default,50%分配给users。
但是这里的资源分配不是一个静态的概念,假如users中没有任务在运行,那么default资源池是允许使用超过50%的资源的,且资源池配置允许在线修改,修改后不需要重启yarn,因为RM会周期性的读取资源池的配置信息。
yarn.scheduler.fair.preemption解释:启用后,如果在某些时间段未达到池的最小共享,Fair Scheduler 可以优先选取其他池中的应用程序。
优先权可保证生产应用程序不缺乏资源,同时还可使群集用于实验和研究应用程序。为尽量减少计算资源浪费,Fair Scheduler 会优先选取最近启动的应用程序。
资源抢占解释:Yarn的资源抢占本身就具有一定的资源开销,并且如果开启了资源抢占,对于长时间运行的任务容易出现延迟的情况。所以在此也建议配置队列时,要将长时间运行任务和执行时间较短的任务放在不同的队列中。同时对于队列的maxResource,可以适当的配置大些,这样即使不打开抢占,RM也是可以将一个队列的已经运行完成的资源回收分配给别的队列。达到提高资源的利用率。
配置权限认证
yarn.acl.enable true
yarn.admin.acl *
yarn.acl.enable解释:指定是否应检查管理 ACL 中指定的用户和组执行管理操作的授权。
yarn.admin.acl解释:确定哪些用户和组可在任何池中提交和中止应用程序以及可以对ResourceManager 角色发出命令的 ACL。
重启服务
2)users池:特定用户提交任务到该池
users池配置跟default基本一样,唯一区别是权限控制所对应用户有所调整。
可以通过配置队列最大资源数限定队列资源最大使用,优先级高于权重配置。
可以通过权限控制哪些用户使用哪些队列