本文介绍如何将YARN集成至Ranger,以及如何实现YARN队列的权限控制。
前提条件
已创建EMR-3.34.0及后续版本或EMR-4.8.0及后续版本的集群,并且选择了Ranger服务,详情请参见创建集群。
背景信息
Ranger YARN仅支持Scheduler队列的权限控制,不支持Fair队列的权限控制。Ranger YARN队列权限控制与YARN自带的Capacity Scheduler配置共同生效。鉴权流程如下图所示。
YARN集成Ranger
注意 请谨慎执行以下操作,确保在配置过程中集群不会提交YARN作业,并在开启Ranger YARN后,给提交YARN作业的用户配置相应的队列权限,否则会出现作业无法提交的问题。
- 启用YARN。
- 登录阿里云E-MapReduce控制台。
- 在顶部菜单栏处,根据实际情况选择地域和资源组。
- 单击上方的集群管理页签。
- 在集群管理页面,单击相应集群所在行的详情。
- 在左侧导航栏中,选择。
- 单击右侧的操作下拉菜单,选择启用YARN。
- 在执行集群操作对话框,填写执行原因,单击确定。
- 在确认对话框,单击确定。
- 在执行集群操作对话框中,输入执行原因,单击确定。
- 在确认对话框,单击确定。
- 单击右上角查看操作历史查看任务进度,等待任务完成。
- Ranger UI添加YARN Service。
- 进入Ranger UI页面,详情请参见概述。
- 在Ranger UI页面,单击YARN所在行的图标,添加YARN Service。
- 配置参数。
参数 |
说明 |
Service Name |
固定值为emr-yarn。
|
Username |
固定值为hadoop。
|
Password |
自定义。 |
Authentication Type |
- 普通集群选择Simple。
- 高安全集群选择Kerberos。
|
YARN REST URL |
http://emr-header-1:8088。
|
Add New Configurations |
- Name1:固定值为policy.download.auth.users。
- Value1:固定值为yarn。
- Name2:固定值为hadoop.http.user.name。
- Value2:固定值为hadoop。
|
- 单击Add。
- 重启YARN ResourceManager。
- 在YARN集群服务页面,选择。
- 在执行集群操作对话框,填写执行原因,单击确定。
- 在确认对话框,单击确定。
- 在执行集群操作对话框中,输入执行原因,单击确定。
- 在确认对话框,单击确定。
- 单击右上角查看操作历史查看任务进度,等待任务完成。
- 修改capacity-scheduler配置。
- 在YARN集群服务页面,单击配置页签。
- 在服务配置区域,单击capacity-scheduler页签。
- 修改xml-direct-to-file-content中的内容。
说明 建议您可以拷贝xml-direct-to-file-content中的全部内容在文本编辑器中编辑。
- 删除以下内容:
<property>
<name>yarn.scheduler.capacity.root.default.acl_submit_applications</name>
<value>*</value>
<description>The ACL of who can submit jobs to the default queue.</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.default.acl_administer_queue</name>
<value>*</value>
<description>The ACL of who can administer jobs on the default queue.</description>
</property>
- 添加以下内容:
<property>
<name>yarn.scheduler.capacity.root.acl_submit_applications</name>
<value> </value>
<description>The ACL of who can submit jobs to the root queue.</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.acl_administer_queue</name>
<value> </value>
<description>The ACL of who can administer jobs on the root queue.</description>
</property>
说明 添加内容中的<value> </value>
,中间是有空格的,表示不允许任何用户向root队列提交作业和管理root队列。
- 保存配置。
- 单击右上角的保存。
- 在确认修改对话框中,输入执行原因,开启自动更新配置。
- 单击确定。
- 刷新Queues。
- 在YARN集群服务页面,选择。
- 在执行集群操作对话框,填写执行原因,单击确定。
- 在确认对话框,单击确定。
- 在执行集群操作对话框中,输入执行原因,单击确定。
- 在确认对话框,单击确定。
- 单击右上角查看操作历史查看任务进度,等待任务完成。
权限配置示例
例如,授予test用户向default队列提交作业的权限。
- 进入Ranger UI页面,详情请参见概述。
- 在Ranger UI页面,单击配置好的emr-yarn。
- 单击右上角的Add New Policy。
- 配置权限。
参数 |
说明 |
Policy Name |
策略名称,可以自定义。 |
Queue |
队列名称,例如root.default。 |
recursive |
子队列是否继承该权限。 |
Select Group |
指定添加此策略的用户组。 |
Select User |
指定添加此策略的用户。例如,test。 |
Permissions |
选择授予的权限。 |
- 单击Add。
添加Policy后,实现对test的授权。test用户可以向default队列提交作业。
说明 添加、删除或修改Policy后,需要等待约一分钟至授权生效。