Yarn公平调度器Fair Scheduler根据用户组分配资源池

from:
原文阅读

之前有文章《Hadoop多用户资源管理–Fair Scheduler介绍与配置》介绍过在Yarn中使用Fair Scheduler根据用户名为多用户管理分配资源。文本在其基础之上,介绍根据用户组管理分配资源池的配置。

假设在生产环境Yarn中,总共有四类用户需要使用集群,开发用户、测试用户、业务1用户、业务2用户。为了使其提交的任务不受影响,我们在Yarn上规划配置了五个资源池,分别为 dev_group(开发用户组资源池)、test_group(测试用户组资源池)、business1_group(业务1用户组资源池)、business2_group(业务2用户组资源池)、default(只分配了极少资源)。并根据实际业务情况,为每个资源池分配了相应的资源及优先级等。

ResourceManager上fair-scheduler.xml配置如下:

  1. <?xml version=“1.0”?>
  2. <allocations>  
  3.   <!– users max running apps –>
  4.   <userMaxAppsDefault>30</userMaxAppsDefault>
  5. <queue name=“root”>
  6. <aclSubmitApps> </aclSubmitApps>
  7. <aclAdministerApps> </aclAdministerApps>
  8.   <queue name=“default”>
  9.           <minResources>2000mb,1vcores</minResources>
  10.           <maxResources>10000mb,1vcores</maxResources>
  11.           <maxRunningApps>1</maxRunningApps>
  12.           <schedulingMode>fair</schedulingMode>
  13.           <weight>0.5</weight>
  14.           <aclSubmitApps>*</aclSubmitApps>
  15.   </queue>
  16.        
  17.   <queue name=“dev_group”>
  18.           <minResources>200000mb,33vcores</minResources>
  19.           <maxResources>300000mb,90vcores</maxResources>
  20.           <maxRunningApps>150</maxRunningApps>
  21.           <schedulingMode>fair</schedulingMode>
  22.           <weight>2.5</weight>
  23.           <aclSubmitApps> dev_group</aclSubmitApps>
  24.           <aclAdministerApps> hadoop,dev_group</aclAdministerApps>
  25.   </queue>
  26.                                                                                                                                                   
  27.   <queue name=“test_group”>
  28.           <minResources>70000mb,20vcores</minResources>
  29.           <maxResources>95000mb,25vcores</maxResources>
  30.           <maxRunningApps>60</maxRunningApps>
  31.           <schedulingMode>fair</schedulingMode>
  32.           <weight>1</weight>
  33.           <aclSubmitApps> test_group</aclSubmitApps>
  34.           <aclAdministerApps> hadoop,test_group</aclAdministerApps>
  35.   </queue>
  36.                                                                           
  37.   <queue name=“business1_group”>
  38.           <minResources>75000mb,15vcores</minResources>
  39.           <maxResources>100000mb,20vcores</maxResources>
  40.           <maxRunningApps>80</maxRunningApps>
  41.           <schedulingMode>fair</schedulingMode>
  42.           <weight>1</weight>
  43.           <aclSubmitApps> business1_group</aclSubmitApps>
  44.           <aclAdministerApps> hadoop,business1_group</aclAdministerApps>
  45.   </queue>
  46.                                                              
  47.                                                                           
  48.   <queue name=“business2_group”>
  49.       <minResources>75000mb,15vcores</minResources>
  50.       <maxResources>102400mb,20vcores</maxResources>
  51.       <maxRunningApps>80</maxRunningApps>
  52.       <schedulingMode>fair</schedulingMode>
  53.       <weight>1</weight>
  54.       <aclSubmitApps> business2_group</aclSubmitApps>
  55.       <aclAdministerApps> hadoop,business2_group</aclAdministerApps>
  56.   </queue>
  57.  
  58. </queue>
  59.   <queuePlacementPolicy>
  60.       <rule name=“primaryGroup” create=“false” />
  61.       <rule name=“secondaryGroupExistingQueue” create=“false” />
  62.       <rule name=“default” />
  63.   </queuePlacementPolicy>
  64.  
  65. </allocations>

这样,每个用户组下的用户提交任务时候,会到相应的资源池中,而不影响其他业务。

需要注意的是,所有客户端提交任务的用户和用户组的对应关系,需要维护在ResourceManager上,ResourceManager在分配资源池时候,是从ResourceManager上读取用户和用户组的对应关系的,否则就会被分配到default资源池。在日志中出现”UserGroupInformation: No groups available for user”类似的警告。而客户端机器上的用户对应的用户组无关紧要。

每次在ResourceManager上新增用户或者调整资源池配额后,需要执行下面的命令刷新使其生效:

  1. yarn rmadmin refreshQueues
  2. yarn rmadmin refreshUserToGroupsMappings

ss

如果觉得本博客对您有帮助,请 赞助作者

转载请注明:lxw的大数据田地 » Yarn公平调度器Fair Scheduler根据用户组分配资源池

此条目发表在hadoop分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注