在 YARN 中提到的用户通常是指登录 Linux 系统的用户。这些用户在操作系统层面被定义和管理,而 YARN 会依赖这些用户信息来进行权限控制和资源分配。以下是具体的说明:
1.YARN 依赖操作系统用户
YARN 本身并不直接管理用户账户,而是依赖于底层操作系统(通常是 Linux)的用户和用户组信息。当用户提交任务到 YARN 时,YARN 会根据提交任务的用户身份(即操作系统中的用户)来执行以下操作:
• 权限检查:根据配置文件(如`fair-scheduler.xml`或`capacity-scheduler.xml`)中定义的权限规则,判断该用户是否有权限提交任务、管理任务或访问特定队列。
• 资源分配:根据用户所属的用户组,将任务分配到对应的资源池(队列)中,并按照队列的资源配额进行资源分配。
2.用户和用户组的作用
在 YARN 中,用户和用户组的作用主要体现在以下几个方面:
权限控制
• 任务提交权限:通过配置文件(如`acl_submit_applications`)指定哪些用户或用户组可以提交任务。
• 任务管理权限:通过配置文件(如`acl_administer_jobs`)指定哪些用户或用户组可以管理(如杀死、修改)任务。
资源分配
• 队列分配:YARN 的调度器(如 Fair Scheduler 或 Capacity Scheduler)可以根据用户所属的用户组,将任务分配到不同的队列中。每个队列可以配置不同的资源配额、优先级等。
• 资源隔离:通过用户组划分,可以实现不同团队或部门之间的资源隔离,避免资源竞争。
3.如何验证用户身份
当用户提交任务到 YARN 时,YARN 会通过以下方式验证用户身份:
• 操作系统用户信息:YARN 会获取提交任务时使用的操作系统用户身份(通常是通过`whoami`命令获取的当前登录用户)。
• 用户组信息:YARN 会根据操作系统的用户组信息,判断用户所属的用户组。
4.示例
假设在 Linux 系统中,有以下用户和用户组:
• 用户`hadoopuser`,属于用户组`hadoopusers`。
在 YARN 的`fair-scheduler.xml`文件中配置如下:
```xml
<property>
<name>aclAdministerApps</name>
<value>hadoopuser hadoopusers</value>
</property>
```
• 含义:允许用户`hadoopuser`和用户组`hadoopusers`的成员管理任务。
• 验证:
• 如果`hadoopuser`登录到 Linux 系统并提交任务,YARN 会识别其为合法用户,并根据配置文件中的规则赋予其管理任务的权限。
• 如果其他用户(如`otheruser`)尝试管理任务,YARN 会拒绝操作,因为`otheruser`不在配置的用户或用户组中。
5.总结
在 YARN 中提到的用户和用户组,确实是指操作系统(Linux)中的用户和用户组。YARN 通过操作系统提供的用户和用户组信息来进行权限控制和资源分配。因此,管理 YARN 的用户权限时,需要先在操作系统层面创建和管理用户及用户组,然后在 YARN 的配置文件中进行相应的权限设置。