Hadoop 文档

General

Common

HDFS

MapReduce

MapReduce REST APIs

YARN

YARN REST APIs

YARN Service

Submarine

Hadoop Compatible File Systems

Auth

Tools

Reference

Configuration

总览

安全群集中的YARN容器使用操作系统功能为容器提供执行隔离。安全容器在作业用户的凭据下执行。操作系统对容器实施访问限制。容器必须以提交应用程序的用途运行。

安全容器仅在受保护的YARN群集中起作用。

容器隔离要求

容器执行程序必须访问容器所需的本地文件和目录,例如jar,配置文件,日志文件,共享对象等。尽管它是由NodeManager启动的,但是容器不应有权访问NodeManager私有文件和配置。不同用户提交的运行容器的应用程序应该隔离,并且不能互相访问文件和目录。类似的要求也适用于其他系统不可文件保护的对象,例如命名管道,关键节,LPC队列,共享内存等。

Linux安全容器执行器

在Linux环境中,安全容器执行程序是LinuxContainerExecutor。它使用称为容器执行程序的外部程序来启动容器。该程序具有setuid访问权限标志集,该程序允许它使用YARN应用程序用户的权限启动容器。

组态

为配置的目录yarn.nodemanager.local-显示目录yarn.nodemanager.log-显示目录必须由配置节点管理器用户(所拥有)和组(hadoop的)。在这些目录上设置的许可权必须为drwxr-xr-x

容器执行程序必须由拥有,并有权限设置--- SR-S ---

要配置NodeManager以使用LinuxContainerExecutor,请在conf / yarn-site.xml中设置以下内容

<属性>
  <name> yarn.nodemanager.container-executor.class </ name>
  <value> org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor </ value>
</ property>

<属性>
  <name> yarn.nodemanager.linux-container-executor.group </ name>
  <value> hadoop </ value>
</ property>

此外,LCE还需要container-executor.cfg文件,该文件由container-executor程序读取。

yarn.nodemanager.linux-container-executor.group =#yarn.nodemanager.linux-container-executor.group的配置值
banned.users =#逗号分隔的无法运行应用程序的用户列表
allowed.system.users =#逗号分隔的允许系统用户列表
min.user.id = 1000#防止其他超级用户

Windows安全容器执行器(WSCE)

Windows环境安全容器执行程序是WindowsSecureContainerExecutor。它使用Windows S4U基础结构以YARN应用程序用户身份启动容器。WSCE需要使用hadoopwinutilsvc服务。此服务由以服务命令行参数开头%HADOOP_HOME%\ bin \ winutils.exe托管。该服务提供了一些需要LocalSystem权限的特权操作,因此不需要NM在提升的上下文中运行整个JVM和所有NM代码。与网管交互hadoopwintulsvc由通过调用JNI本地RPC(LRPC)来给RCP客户服务托管在hadoop.dll

组态

要配置NodeManager以使用WindowsSecureContainerExecutor,请在conf / yarn-site.xml中设置以下内容

        <属性>
          <name> yarn.nodemanager.container-executor.class </ name>
          <value> org.apache.hadoop.yarn.server.nodemanager.WindowsSecureContainerExecutor </ value>
        </ property>

        <属性>
          <name> yarn.nodemanager.windows-secure-container-executor.group </ name>
          <value>纱线</ value>
        </ property>

hadoopwinutilsvc使用%HADOOP_HOME%\ etc \ hadoop \ wsce_site.xml来配置对特权操作的访问。

<属性>
 <name> yarn.nodemanager.windows-secure-container-executor.impersonate.allowed </ name>
  <value> HadoopUsers </ value>
</ property>

<属性>
  <name> yarn.nodemanager.windows-secure-container-executor.impersonate.denied </ name>
  <value> HadoopServices,管理员</ value>
</ property>

<属性>
  <name> yarn.nodemanager.windows-secure-container-executor.allowed </ name>
  <value> nodemanager </ value>
</ property>

<属性>
  <name> yarn.nodemanager.windows-secure-container-executor.local-dirs </ name>
  <value> nm-local-dir,nm-log-dirs </ value>
</ property>

<属性>
  <name> yarn.nodemanager.windows-secure-container-executor.job-name </ name>
  <value> nodemanager-job-name </ value>
</ property>  

yarn.nodemanager.windows-secure-container-executor.allowed应该包含运行nodemanager的服务帐户的名称。允许该用户访问hadoopwintuilsvc函数。

yarn.nodemanager.windows-secure-container-executor.impersonate.allowed应包含允许在集群中创建容器的用户。hadoopwinutilsvc将允许模拟这些用户。

yarn.nodemanager.windows-secure-container-executor.impersonate.denied应包含明确禁止创建容器的用户。hadoopwinutilsvc将拒绝模拟这些用户。

yarn.nodemanager.windows-secure-container-executor.local-dirs应该包含nodemanager本地目录。hadoopwinutilsvc将只允许在这些目录下进行文件操作。它应包含与$ yarn.nodemanager.local-dirs,$ yarn.nodemanager.log-dirs相同的值但请注意hadoopwinutilsvc XML配置处理不会进行替换,因此该值必须为最终值。所有路径都必须是绝对路径,并且不会执行任何环境变量替换。比较路径LOCAL_INVARIANT不区分大小写的字符串比较,验证的文件路径必须以local-dirs配置中列出的路径之一开头。使用逗号作为路径分隔符:

yarn.nodemanager.windows-secure-container-executor.job-name应该包含所有容器都应添加到的Windows NT作业名称。此配置是可选的。如果未设置,则不会将容器添加到全局NodeManager作业。通常,应将其设置为分配给NM的作业,以便杀死NM也会杀死所有容器。Hadoopwinutilsvc不会尝试创建此作业,启动容器时该作业必须存在。如果设置了该值而该作业不存在,则容器启动将失败,并显示错误2 系统找不到指定的文件。请注意,此全局NM作业与容器作业无关,容器作业始终为每个容器创建,并以容器ID命名。此设置控制一个跨所有容器和父NM的全局作业,因此它需要嵌套的作业。嵌套作业仅在Windows 8和Windows Server 2012之后可用。