问题导读
1.什么是Kerberos Principal?
2.Hadoop守护进程是否使用不同的用户?
3.各个守护进程keytab 文件各有什么特点?区别在什么地方?
说明
本文档介绍了如何配置验证Hadoop的安全模式。默认hadoop运行在非安全模式下,没有实际的身份验证要求。使用hadoop服务,每一个用户和服务都需要Kerberos身份验证。Hadoop的安全功能,包括身份验证,服务级授权,Web控制台认证和数据保密。
身份验证(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-common/SecureMode.html#Authentication)
服务级授权(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-common/ServiceLevelAuth.html)
Web控制台认证(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-common/HttpAuthentication.html)
数据保密(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-common/SecureMode.html#Data_confidentiality)
身份认证
终端用户帐户
当打开服务级别授权,终端用户使用hadoop安全模式需要Kerberos身份验证。最简单的方式认证是使用kinit Kerberos命令
【注释:kinit 命令:
用途
获得或更新 Kerberos 票据授权票据(ticket-granting ticket)。
描述
kinit 命令获得或更新 Kerberos 票据授权票据。如果不在命令行上指定一个票据标志,则使用由在 Kerberos 配置文件(kdc.conf )中的 [kdcdefault] 和 [realms] 指定的密钥分发中心(KDC)选项。
】
Hadoop守护进程用户帐户
确保HDFS和YARN守护进程运行不同的Unix用户,例如hdfs 和 yarn.同样确保MapReduce JobHistory server运行不同的用户比如mapred。
建议让它们共享Unix组,比如hadoop。详细查看 “Mapping from user to group”
User:Group | Daemons | hdfs:hadoop | NameNode, Secondary NameNode, JournalNode, DataNode | yarn:hadoop | ResourceManager, NodeManager | mapred:hadoop | MapReduce JobHistory Server |
Kerberos Principal hadoop守护进程和用户
运行hadoop守护进程服务在安全模式下, Kerberos principals是需要的。每个服务读取身份认证信息保存在keytab文件【有相应的权限】HTTP web-consoles服务于来自不同的RPC的 sprincipal【原文:HTTP web-consoles should be served by principal different from RPC’s one.】
下面部分给出了Hadoop服务凭证的例子。
注释:
【Kerberos协议术语解释【此部分是为帮助理解额外附加内容】
Principal:在Kerberos中,Principal是参加认证的基本实体。一般来说有两种,一种用来表示Kerberos数据库中的用户, 另一种用来代表某一特定主机,也就是说Principal是用来表示客户端和服务端身份的实体, Principal的格式采用ASN.1标准,即Abstract Syntax Notation One,来准确定义),Principal是由三个部分组成:名字(name),实例(instance),REALM(域)。比如一个标准的 Kerberos的用户是:name/instance@REALM 。
Name:第一部分。在代表客户方的情况,它是一个用户名;在代表主机的情况,它是写成host。
Instance:第二部分。对name的进一步描述,例如name所在的主机名或name的类型等,可省略。它与第一部分之间用‘ / ’分隔,但是作为主机的描述时写成host/Instance。
Realm:第三部分。是Kerberos在管理上的划分,在 KDC中所负责的一个域数据库称作为Realm。这个数据库中存放有该网络范围内的所有Principal和它们的密钥,数据库的内容被Kerberos 的认证服务器AS和票据授权服务器TGS所使用。Realm通常是永远是大写的字符,并且在大多数Kerberos系统的配置中,一般Realm和该网络环境的DNS域是一致的。与第二部分之间用‘@’分隔,缺省为本地的Realm。】
HDFS
NameNode keytab 文件,在NameNode主机,应该是下面样子
[mw_shl_code=bash,true]$ klist -e -k -t /etc/security/keytab/nn.service.keytab
Keytab name: FILE:/etc/security/keytab/nn.service.keytab
KVNO Timestamp Principal
4 07/18/11 21:08:09 nn/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 nn/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 nn/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)[/mw_shl_code]
Secondary NameNode keytab 文件,应该是下面样子
[mw_shl_code=bash,true]$ klist -e -k -t /etc/security/keytab/sn.service.keytab
Keytab name: FILE:/etc/security/keytab/sn.service.keytab
KVNO Timestamp Principal
4 07/18/11 21:08:09 sn/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 sn/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 sn/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)[/mw_shl_code]
DataNode keytab 文件,应该是下面样子
[mw_shl_code=bash,true]$ klist -e -k -t /etc/security/keytab/dn.service.keytab
Keytab name: FILE:/etc/security/keytab/dn.service.keytab
KVNO Timestamp Principal
4 07/18/11 21:08:09 dn/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 dn/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 dn/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)[/mw_shl_code]
YARN
ResourceManager keytab 文件,在ResourceManager客户端,应该是下面样子
[mw_shl_code=bash,true]$ klist -e -k -t /etc/security/keytab/rm.service.keytab
Keytab name: FILE:/etc/security/keytab/rm.service.keytab
KVNO Timestamp Principal
4 07/18/11 21:08:09 rm/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 rm/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 rm/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)[/mw_shl_code]
NodeManager keytab 文件,在每个客户端,应该是下面样子
[mw_shl_code=bash,true]$ klist -e -k -t /etc/security/keytab/nm.service.keytab
Keytab name: FILE:/etc/security/keytab/nm.service.keytab
KVNO Timestamp Principal
4 07/18/11 21:08:09 nm/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 nm/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 nm/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)[/mw_shl_code]
MapReduce JobHistory Server
MapReduce JobHistory Server keytab 文件,应该是下面样子
[mw_shl_code=bash,true]$ klist -e -k -t /etc/security/keytab/jhs.service.keytab
Keytab name: FILE:/etc/security/keytab/jhs.service.keytab
KVNO Timestamp Principal
4 07/18/11 21:08:09 jhs/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 jhs/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 jhs/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)[/mw_shl_code]
从Kerberos principal映射用户帐户
hadoop映射Kerberos principal到操作系统用户帐户,使用由hadoop.security.auth_to_local指定的规则。它是同样的工作方式在Kerberos配置文件(krb5.conf http://web.mit.edu/Kerberos/krb5-latest/doc/admin/conf_files/krb5_conf.html)作为auth_to_local。额外,hadoop auth_to_local映射支持 /L 标记,小写字母返回名称。
默认,如果领域匹配到default_realm,它选择principal名称第一个组件(通常定义在/etc/krb5.conf)。例如host/full.qualified.domain.name@REALM.TLD 映射host为默认规则.
定制规则使用hadoop kerbname命令来测试。这个命令允许指定一个principal和使用Hadoop的当前auth_to_local规则集。输出什么身份验证,hadoop将使用它的用法。
从用户到组的映射
尽管hdfs文件是有用户和组的,但是hadoop自己没有定义组,用户到组的映射是由操作系统或LDAP来做。改变映射的方式由 hadoop.security.group.mapping 的值提供映射名称。查看Permissions Guide for details.实际上你需要管理SSO环境使用Kerberos和LDAP的Hadoop的安全模式。
代理用户
一些产品比如Apache Oozie,它代表终端用户访问hadoop访问需要能够代理终端用户。详细查看 HDFS Permissions Guide(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html)
datanode安全
因为datanode传输数据协议不需要使用hadoop RPC框架,DataNode 必须使用特权端口验证自己的身份,端口由 dfs.datanode.address 和 dfs.datanode.http.address指定。验证基于这样的假设,攻击者将无法获得根权限。
当你使用root用户执行hdfs datanode命令,服务器进程首先绑定特权端口,然后放弃特权,由HADOOP_SECURE_DN_USER 指定的用户帐户来运行。启动进程使用jsvc安装到JSVC_HOME。你必须指定HADOOP_SECURE_DN_USER 和 JSVC_HOME 作为环境变量(在 hadoop-env.sh文件中)。
2.6.0版,SASL可以用来验证数据传输协议。这样的配置,不在需要安全集群以root用户使用jsvc和绑定特权端口启动datanode.为了启用数据传输协议SASL,需要设置hdfs-site.xml文件中的 dfs.data.transfer.protection ,对于dfs.datanode.address 设置一个非特权端口,为HTTPS_ONLY设置 dfs.http.policy和确定HADOOP_SECURE_DN_USER 环境变量没有定义。需要注意的是,如果dfs.datanode.address 设置特权端口,使用SASL数据传输协议是不可能的。这是必需的向后兼容的原因。
为了迁移集群,使用root身份认证开始使用SASL 来代替。首先确保是版本2.6.0或则后面版本,部署集群节点跟外部应用程序一样需要连接集群。仅2.6.0版本或则2.6.0以后版本HDFS客户端可以连接DataNode使用数据传输协议SASL,因此至关重要的是在迁移前有一个正确的版本。
2.6.0版本或则以后版本已经部署,更新任何外部应用程序启用SASL认证配置。如果一个HDFS客户端启用了SASL,然后它即可以使用root身份认证,也可以使用SASL身份认证连接DataNode。所有客户端的配置改变保障随后的DataNode配置改变不影响应用程序。最后每一个独立的DataNode可以被迁移,修改它的配置和重启。可以有一个混合的,有的DataNodes运行使用root身份验证,有的是用SASL 身份验证,在迁移期间暂时这是被允许的。因为HDFS客户端启用SASL可以连接二者。
数据保密性
RPC数据加密
hadoop的服务和客户端之间传送的数据。设置hadoop.rpc.protection为"privacy"在 core-site.xml 文件中激活数据加密
Block 数据传输的数据加密
DataNode数据传输协议加密激活,需要设置 dfs.encrypt.data.transfer为true.可选,你需要设置 dfs.encrypt.data.transfer.algorithm 为 “3des” 或则 “rc4”,选择指定的算法。如果没有指定,系统默认使用配置JCE,通常是3DES。
设置 dfs.encrypt.data.transfer.cipher.suites 为 AES/CTR/NoPadding 激活 AES encryption. 默认,如果没有指定,不使用AES。什么时候使用AES,由dfs.encrypt.data.transfer.algorithm 指定,它仍然在初始密钥交换时使用。AES密钥位长度可以被配置,设置dfs.encrypt.data.transfer.cipher.key.bitlength为128,192或则256,默认128.AES提供了最大的加密强度和最佳的性能。于此同时,3DES 和 RC4 被经常用于hadoop集群。
HTTP数据加密
用于hadoop集群。
在Web-console 和 clients 之间传输数据由SSL保护.
配置
HDFS 和本地文件系统二者的权限
下面表格列出了HDFS不同的路径和本地文件系统(所有节点)和推荐权限
Filesystem | Path | User:Group | Permissions | local | dfs.namenode.name.dir | hdfs:hadoop | drwx------ | local | dfs.datanode.data.dir | hdfs:hadoop | drwx------ | local | $HADOOP_LOG_DIR | hdfs:hadoop | drwxrwxr-x | local | $YARN_LOG_DIR | yarn:hadoop | drwxrwxr-x | local | yarn.nodemanager.local-dirs | yarn:hadoop | drwxr-xr-x | local | yarn.nodemanager.log-dirs | yarn:hadoop | drwxr-xr-x | local | container-executor | root:hadoop | --Sr-s--* | local | conf/container-executor.cfg | root:hadoop | r-------* | hdfs | / | hdfs:hadoop | drwxr-xr-x | hdfs | /tmp | hdfs:hadoop | drwxrwxrwxt | hdfs | /user | hdfs:hadoop | drwxr-xr-x | hdfs | yarn.nodemanager.remote-app-log-dir | yarn:hadoop | drwxrwxrwxt | hdfs | mapreduce.jobhistory.intermediate-done-dir | mapred:hadoop | drwxrwxrwxt | hdfs | mapreduce.jobhistory.done-dir | mapred:hadoop | drwxr-x--- |
通用配置
为了开启hadoop rcp 身份验证,设置hadoop.security.authentication 属性值为 "kerberos"。设置下面列出的安全相关设置。下面属性在集群所有节点core-site.xml
参数 | 值 | 说明 | hadoop.security.authentication | kerberos | 简单:没有身份验证。(默认):启用Kerberos认证协议。 | hadoop.security.authorization | true | | hadoop.rpc.protection | authentication | authentication : 仅身份验证 (默认) integrity : 完整性检查除了身份验证 privacy : 数据加密除了完整性 | hadoop.security.auth_to_local | RULE:exp1 RULE:exp2 … DEFAULT | 这个字符串值包含新的一行字符 | hadoop.proxyuser.superuser.hosts |
| 逗号分隔host,host超级用户允许代理(这里理解感觉不是太准确,贴出原文提供参考:comma separated hosts from which superuser access are allowd to impersonation)
*表示通配符 | hadoop.proxyuser.superuser.groups |
| 逗号分隔组,组的用户由超级用户代理(这里理解感觉不是太准确,贴出原文提供参考:comma separated groups to which users impersonated by superuser belongs.) *表示通配符 |
NameNode参数 | 值 | 说明 | dfs.block.access.token.enable | true | 为了安全操作,启用 HDFS block 访问令牌 | dfs.https.enable | true | 这个值被弃用. 使用 dfs.http.policy | dfs.http.policy | HTTP_ONLY or HTTPS_ONLY orHTTP_AND_HTTPS | HTTPS_ONLY 关闭 http access. 这个选项优先于弃用配置dfs.https.enable和hadoop.ssl.enabled。 如果使用数据传输协议SASL,代替DataNode root和使用特权端口,这个属性必须设置HTTPS_ONLY保障HTTP servers身份认证。(查看dfs.data.transfer.protection.) | dfs.namenode.https-address | nn_host_fqdn:50470 |
| dfs.https.port | 50470 |
| dfs.namenode.keytab.file | /etc/security/keytab/ nn.service.keytab | NameNode Kerberos keytab 文件 . | dfs.namenode.kerberos.principal | | NameNode Kerberos principal 名字. | dfs.namenode.kerberos.internal.spnego.principal | | NameNode HTTP Kerberos principal 名字 . |
Secondary NameNode参数 | 值 | 说明 | dfs.namenode.secondary.http-address | c_nn_host_fqdn:50090 |
| dfs.namenode.secondary.https-port | 50470 |
| dfs.secondary.namenode.keytab.file | /etc/security/keytab/ sn.service.keytab | Secondary NameNode Kerberos keytab 文件 . | dfs.secondary.namenode.kerberos.principal | | Secondary NameNode Kerberos principal 名字. | dfs.secondary.namenode.kerberos.internal.spnego.principal | | Secondary NameNode HTTP Kerberos principal 名字 . |
DataNode参数 | 值 | 说明 | dfs.datanode.data.dir.perm | 700 |
| dfs.datanode.address | 0.0.0.0:1004 | DataNode安全必须使用特权端口,为了确保server安全启动。这意味着server必须通过jsvc启动。另外,如果使用数据传输协议SASL身份验证,必须设置一个非特权端口 (查看 dfs.data.transfer.protection.) | dfs.datanode.http.address | 0.0.0.0:1006 | DataNode安全必须使用特权端口,确保server安全启动。意味着server必须通过jsvc启动 | dfs.datanode.https.address | 0.0.0.0:50470 |
| dfs.datanode.keytab.file | /etc/security/keytab /dn.service.keytab | DataNode Kerberos keytab 文件 | dfs.datanode.kerberos.principal | | DataNode Kerberos principal 名称 | dfs.encrypt.data.transfer | false | 当使用数据加密时,设置为true | dfs.encrypt.data.transfer.algorithm |
| 当使用数据加密来控制加密算法时,可选设置为3des或则rc4
| dfs.encrypt.data.transfer.cipher.suites |
| 当使用数据加密,可选设置 AES/CTR/NoPadding,激活AES 数据加密
| dfs.encrypt.data.transfer.cipher.key.bitlength |
| 当使用AES数据加密时,设置 128, 192 或则 256 to 控制 key 位长度 | dfs.data.transfer.protection |
| authentication : 仅仅身份验证
integrity : 除了身份验证,还有完整性验证
privacy : 除了完整性验证,还有数据加密
此属性未指定默认值。设置这个属性启用SASL数据传输协议身份验证。如果这个启用了,然后dfs.datanode.address必须使用非特权端口,dfs.http.policy必须设置为HTTPS_ONLY 和HADOOP_SECURE_DN_USER环境变量必须未指定,当启动DataNode进程
|
WebHDFS参数 | 值 | 说明 | dfs.web.authentication.kerberos.principal | | WebHDFS Kerberos principal 名称. | dfs.web.authentication.kerberos.keytab | /etc/security/keytab/http.service.keytab | WebHDFS Kerberos keytab文件 . |
ResourceManager参数 | 值 | 说明 | yarn.resourcemanager.keytab | /etc/security/keytab/ rm.service.keytab | ResourceManager Kerberos keytab 文件. | yarn.resourcemanager.principal | | ResourceManager Kerberos principal 名称 |
NodeManager参数 | 值 | 说明 | yarn.nodemanager.keytab | /etc/security/keytab/nm.service.keytab | NodeManager Kerberos keytab 文件 | yarn.nodemanager.principal | | NodeManager Kerberos principal 名称 | yarn.nodemanager.container-executor.class | org.apache.hadoop.yarn.server. nodemanager.LinuxContainerExecutor | 使用 LinuxContainerExecutor. | yarn.nodemanager.linux-container-executor.group | hadoop | NodeManager 的Unix 组 | yarn.nodemanager.linux-container-executor.path | /path/to/bin/container-executor | 容器执行器可执行程序的路径。 |
配置 WebAppProxy
WebAppProxy提供了一个由应用程序和最终用户输出代理端口,在web应用程序之间。如果安全启用,他将警告用户,在访问可能非安全的web应用程序。身份验证和授权使用代理处理就像任何其他特权的web应用程序。
参数 | 值 | 说明 | yarn.web-proxy.address | WebAppProxy host:port AM web apps 代理 | host:port 如果跟 yarn.resourcemanager.webapp.address 一样或则它没有定义ResourceManager 将运行代理,否则一个独立的代理服务器将需要启动。 | yarn.web-proxy.keytab | /etc/security/keytab/web-app.service.keytab | WebAppProxy Kerberos keytab文件. | yarn.web-proxy.principal | | WebAppProxy Kerberos principal 名称 . |
LinuxContainerExecutor
Yarn框架使用ContainerExecutor,Yarn框架定义了容器的启动和控制,一下是hadoop yarn可用的:
ContainerExecutor | 描述 | DefaultContainerExecutor | 默认执行器,Yarn用来管理容器的执行。容器的进程NodeManager与Linux用户相同 | LinuxContainerExecutor | 仅支持GNU/Linux,这个executor运行容器即可以作为YARN用户提交应用程序(当完整安全性启用)也可以作为一个专用用户(默认nobody),当完整的安全性未启用。当完整安全性启用,这个executor需要创建所有用户,在集群节点容器启动时。它使用一个setuid执行文件,包括在Hadoop分布中。NodeManager使用该可执行程序来启动和杀死容器。setuid执行切换到用户提交和启动应用程序或杀死容器。为了最大限度的安全,这个executor设置严格的权限,和本地文件和目录的用户/组所有者,比如共享的objects, jars, 中间文件, 日志文件等. 需要需要说明的是,因为这,除了应用程序所有者和NodeManager,没有其它用户可以访问任何的本地文件/目录包括这些本地化的分布式缓存的部分。 |
要构建LinuxContainerExecutor可执行文件运行: [mw_shl_code=bash,true] $ mvn package -Dcontainer-executor.conf.dir=/etc/hadoop/[/mw_shl_code]
路径 -Dcontainer-executor.conf.dir应该是集群节点上的路径,它的setuid可执行文件的配置文件被定位,可执行文件应安装在 $HADOOP_YARN_HOME/bin.
可执行文件必须有特定的权限: 6050 或则--Sr-s---允许用户拥有root权限(超级用户)和组拥有专用组(比如hadoop),NodeManager Unix 用户是它的组成员和不是普通的应用程序用户。
LinuxTaskController需要包括路径和由 yarn.nodemanager.local-dirs 和 yarn.nodemanager.log-dirs指定的目录,如上表所述对目录设置的权限,设置为755.
- conf/container-executor.cfg
可执行文件需要配置文件称之为 container-executor.cfg,现在在配置文件目录传递给上述提到的mvn target。
配置文件必须由拥有的用户运行NodeManager(上述例子的yarn用户),任何人拥有的组,和应该有权限 0400 或则r-------- .
可执行文件需要下面配置项,现在在 conf/container-executor.cfg文件中。该配置项被提及为简单的键=值对,每行一个:
参数 | 值 | 说明 | yarn.nodemanager.linux-container-executor.group | hadoop | NodeManager Unix 组.container-executor的二进制所属组应该属于这个组,应该是跟NodeManager 配置的值相同.这个配置需要验证访问container-executor 二进制的安全. | banned.users | hdfs,yarn,mapred,bin | 禁止用户 | allowed.system.users | foo,bar | 允许系统用户 | min.user.id | 1000 | 防止其他超级用户。 |
下面是本地系统文件权限,需要相关的LinuxContainerExecutor不同的路径
文件系统 | 路径 | 用户:组 | 权限 | local | container-executor | root:hadoop | --Sr-s--* | local | conf/container-executor.cfg | root:hadoop | r-------* | local | yarn.nodemanager.local-dirs | yarn:hadoop | drwxr-xr-x | local | yarn.nodemanager.log-dirs | yarn:hadoop | drwxr-xr-x |
MapReduce JobHistory Server参数 | 值 | 说明 | mapreduce.jobhistory.address | MapReduce JobHistory Server host:port | 默认端口是 10020. | mapreduce.jobhistory.keytab | /etc/security/keytab/jhs.service.keytab | MapReduce JobHistory Server Kerberos keytab文件 | mapreduce.jobhistory.principal | | MapReduce JobHistory Server. Kerberos principal名称 |
相关文章
hadoop入门-第一章General:第一节单节点伪分布
hadoop入门-第一章General:第二节集群配置
hadoop入门-第一章General:第三节Hadoop初级入门之命令指南
hadoop入门-第一章General:第四节文件系统shell
hadoop入门-第一章General:第五节hadoop的兼容性说明
hadoop入门-第一章General:第六节开发人员和用户接口指南:hadoop接口分类
hadoop入门-第一章General:第七节Hadoop 文件系统 API :概述
hadoop入门-第二章common:第一节hadoop 本地库 指南
hadoop入门-第二章common:第二节hadoop代理用户 -超级用户代理其它用户
hadoop入门-第二章common:第三节机架智能感知
hadoop入门-第二章common:第四节安全模式说明
hadoop入门-第二章common:第五节服务级别授权指南
hadoop入门-第二章common:第六节Hadoop HTTP web-consoles认证机制
hadoop入门-第二章common:第七节Hadoop Key管理服务器(KMS) - 文档集
hadoop入门:第三章HDFS文档概述(一)
hadoop入门:第三章HDFS文档概述(二)
hadoop入门:第四章mapreduce文档概述
hadoop入门:第五章MapReduce REST APIs文档概述
hadoop入门:第六章YARN文档概述
hadoop入门:第七章YARN REST APIs
hadoop入门:第八章hadoop兼容文件系统
hadoop入门:第九章hadoop认证
hadoop入门:第十章hadoop工具
hadoop入门:第十一章hadoop配置
|