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.  
  9.   <queue name=“default”>
  10.           <minResources>2000mb,1vcores</minResources>
  11.           <maxResources>10000mb,1vcores</maxResources>
  12.           <maxRunningApps>1</maxRunningApps>
  13.           <schedulingMode>fair</schedulingMode>
  14.           <weight>0.5</weight>
  15.           <aclSubmitApps>*</aclSubmitApps>
  16.   </queue>
  17.        
  18.   <queue name=“dev_group”>
  19.           <minResources>200000mb,33vcores</minResources>
  20.           <maxResources>300000mb,90vcores</maxResources>
  21.           <maxRunningApps>150</maxRunningApps>
  22.           <schedulingMode>fair</schedulingMode>
  23.           <weight>2.5</weight>
  24.           <aclSubmitApps> dev_group</aclSubmitApps>
  25.           <aclAdministerApps> hadoop,dev_group</aclAdministerApps>
  26.   </queue>
  27.                                                                                                                                                   
  28.   <queue name=“test_group”>
  29.           <minResources>70000mb,20vcores</minResources>
  30.           <maxResources>95000mb,25vcores</maxResources>
  31.           <maxRunningApps>60</maxRunningApps>
  32.           <schedulingMode>fair</schedulingMode>
  33.           <weight>1</weight>
  34.           <aclSubmitApps> test_group</aclSubmitApps>
  35.           <aclAdministerApps> hadoop,test_group</aclAdministerApps>
  36.   </queue>
  37.                                                                           
  38.   <queue name=“business1_group”>
  39.           <minResources>75000mb,15vcores</minResources>
  40.           <maxResources>100000mb,20vcores</maxResources>
  41.           <maxRunningApps>80</maxRunningApps>
  42.           <schedulingMode>fair</schedulingMode>
  43.           <weight>1</weight>
  44.           <aclSubmitApps> business1_group</aclSubmitApps>
  45.           <aclAdministerApps> hadoop,business1_group</aclAdministerApps>
  46.   </queue>
  47.                                                              
  48.                                                                           
  49.   <queue name=“business2_group”>
  50.       <minResources>75000mb,15vcores</minResources>
  51.       <maxResources>102400mb,20vcores</maxResources>
  52.       <maxRunningApps>80</maxRunningApps>
  53.       <schedulingMode>fair</schedulingMode>
  54.       <weight>1</weight>
  55.       <aclSubmitApps> business2_group</aclSubmitApps>
  56.       <aclAdministerApps> hadoop,business2_group</aclAdministerApps>
  57.   </queue>
  58.  
  59. </queue>
  60.   <queuePlacementPolicy>
  61.       <rule name=“primaryGroup” create=“false” />
  62.       <rule name=“secondaryGroupExistingQueue” create=“false” />
  63.       <rule name=“default” />
  64.   </queuePlacementPolicy>
  65.  
  66. </allocations>更多精彩内容点我学​​​​​​​

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

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

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

  1. yarn rmadmin –refreshQueues
  2. yarn rmadmin –refreshUserToGroupsMappings
发布了7 篇原创文章 · 获赞 0 · 访问量 5227

猜你喜欢

转载自blog.csdn.net/hadoop01478/article/details/104162385
今日推荐