首发于猿论
Yarn Secure Container Executor配置简介

Yarn Secure Container Executor配置简介

前面我们简单介绍了Hadoop资源管控简介,提到了目录的空间大小,目录文件个数,yarn任务内存等等资源的管控,如果我们想要对cpu进行控制就需要用到linux系统本身的cgroup。这时候就需要设置Yarn的Container Executor了。

1. 说明


安全模式集群中的YARN containers使用系统工具为容器提供执行隔离。保证容器在job所有者的证书认证下执行,操作系统强制对容器进行访问限制,同时容器只能用于提交application。


安全容器只能在拥有安全认证的yarn集群中使用。


YARN提供了三种ContainerExecutor,通过属性yarn.nodemanager.container-executor.class配置:


  • DefaultContainerExecutor,简称DCE。每个Container运行在单独的进程里,但进程都是由NM的用户启动的。比如NM进程是用yarn用户启动的,那么所有Container的进程也由yarn用户启动。
  • LinuxContainerExecutor,简称LCE。每个Container由不同的用户启动。比如A用户提交的job的container,都由A用户启动。此外支持cgroup、支持单独的配置文件、支持简单的ACL。
  • Windows Secure Container Executor,简称WSCE。

2. 配置


这里只介绍LinuxContainerExecutor的配置。


编辑配置文件yarn-site.xml,添加LinuxContainerExecutor

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

<property>
  <name>yarn.nodemanager.linux-container-executor.group</name>
  <value>hadoop</value>
</property>
<!--此处的group为nodemanager用户所属组-->


编辑container-executor.cfg 添加如下内容:

#configured value of yarn.nodemanager.linux-container-executor.group
yarn.nodemanager.linux-container-executor.group=hadoop
#comma separated list of users who can not run applications
banned.users=azkaban
#comma separated list of allowed system users
allowed.system.users=root
#Prevent other super-users
min.user.id=1000


: container-executor.cfg配置文件有很多坑,例如每一个配置项末尾都不能有空格,文件不能以CRLF 换行,banned.users=不能为空等,编辑时需注意。

修改bin/container-executor权限

container-executor的owner必须是root,而且必须与nodemanager用户同组$chown root:hadoop container-executor
$chmod 6050 container-executor


测试 container-executor

[root@datanode-2 bin]# ./container-executor
Usage: container-executor --checksetup
Usage: container-executor --mount-cgroups hierarchy controller=path...
Usage: container-executor user yarn-user command command-args
Commands:
   initialize container:  0 appid tokens nm-local-dirs nm-log-dirs cmd app...
   launch container:     1 appid containerid workdir container-script tokens pidfile nm-local-dirs nm-log-dirs resources
   signal container:     2 container-pid signal
   delete as user:  3 relative-path


重启nodemanager


3. 注意事项

container-executor和container-executor.cfg 及其所有父目录的owner都必须是root.

4. 参考链接

hadoop.apache.org/docs/

secfree.github.io/blog/

jxy.me/2015/05/15/yarn-


作者:叁金

链接:imooc.com/article/39037

来源:慕课网

本文原创发布于慕课网 ,转载请注明出处,谢谢合作


推荐阅读:

【官方】手记栏目认证作者招募,长期有效,随时报名!_慕课手记

有奖征文005期 |人生路上得一良师,是何感受?

web自动化测试从入门到持续集成

可能是把Docker的概念讲的最清楚的一篇文章

论代码所需要的环境、版本的重要性

编辑于 2018-06-29

文章被以下专栏收录

    “只整码,不整事”。程序员界依据所用的不同语言划分不同帮派,会出现各种自黑互黑现象,这个专栏希望能进行正向的知识传播和分享,不相互拆台,不互怼,和谐友好进行交流。