当前位置:   article > 正文

用户认证——Kerberos集成Hadoop的配置_hadoop配置kerberos认证

hadoop配置kerberos认证

1 创建Hadoop系统用户

为Hadoop开启Kerberos,需为不同服务准备不同的用户,启动服务时需要使用相应的用户。须在所有节点创建以下用户和用户组。

创建hadoop组

[root@hadoop102 ~]# groupadd hadoop

 hadoop103和hadoop104做同样的操作。

创建各用户并设置密码

[root@hadoop102 ~]# useradd hdfs -g hadoop

[root@hadoop102 ~]# echo hdfs | passwd --stdin  hdfs

[root@hadoop102 ~]# useradd yarn -g hadoop

[root@hadoop102 ~]# echo yarn | passwd --stdin yarn

[root@hadoop102 ~]# useradd mapred -g hadoop

[root@hadoop102 ~]# echo mapred | passwd --stdin mapred

 hadoop103和hadoop104做同样的操作。

2 Hadoop Kerberos配置

2.1 为Hadoop各服务创建Kerberos主体(Principal)

主体格式如下:ServiceName/HostName@REALM,例如 dn/hadoop102@EXAMPLE.COM

1.各服务所需主体如下

2.创建主体

1)在所有节点创建keytab文件目录

[root@hadoop102 ~]# mkdir /etc/security/keytab/

[root@hadoop102 ~]# chown -R root:hadoop /etc/security/keytab/

[root@hadoop102 ~]# chmod 770 /etc/security/keytab/

  hadoop103和hadoop104做同样的操作。

2)以下命令在hadoop102节点执行

NameNode(hadoop102

[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey nn/hadoop102"

[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/nn.service.keytab nn/hadoop102"

DataNode(hadoop102

[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey dn/hadoop102"

[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/dn.service.keytab dn/hadoop102"

NodeManager(hadoop102

[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey nm/hadoop102"

[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/nm.service.keytab nm/hadoop102"

JobHistory Server(hadoop102

[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey jhs/hadoop102"

[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/jhs.service.keytab jhs/hadoop102"

Web UI(hadoop102

[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey HTTP/hadoop102"

[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/spnego.service.keytab HTTP/hadoop102"

查看[root@hadoop102 ~]# cd /etc/security/keytab/

2)以下命令在hadoop103执行

ResourceManager(hadoop103

[root@hadoop103 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey rm/hadoop103"

[root@hadoop103 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/rm.service.keytab rm/hadoop103"

DataNode(hadoop103

[root@hadoop103 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey dn/hadoop103"

[root@hadoop103 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/dn.service.keytab dn/hadoop103"

NodeManager(hadoop103

[root@hadoop103 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey nm/hadoop103"

[root@hadoop103 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/nm.service.keytab nm/hadoop103"

Web UI(hadoop103

[root@hadoop103 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey HTTP/hadoop103"

[root@hadoop103 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/spnego.service.keytab HTTP/hadoop103"

3)以下命令在hadoop104执行

DataNode(hadoop104

[root@hadoop104 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey dn/hadoop104"

[root@hadoop104 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/dn.service.keytab dn/hadoop104"

Secondary NameNode(hadoop104

[root@hadoop104 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey sn/hadoop104"

[root@hadoop104 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/sn.service.keytab sn/hadoop104"

NodeManager(hadoop104

[root@hadoop104 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey nm/hadoop104"

[root@hadoop104 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/nm.service.keytab nm/hadoop104"

Web UI(hadoop104

[root@hadoop104 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey HTTP/hadoop104"

[root@hadoop104 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/spnego.service.keytab HTTP/hadoop104"

4.修改所有节点keytab文件的所有者和访问权限

[root@hadoop102 ~]# chown -R root:hadoop /etc/security/keytab/

[root@hadoop102 ~]# chmod 660 /etc/security/keytab/*

  hadoop103和hadoop104做同样的操作。

2.2  修改Hadoop配置文件

1.core-site.xml

[root@hadoop102 ~]# vim /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml

增加以下内容

  1. <!-- Kerberos主体到系统用户的映射机制 -->
  2. <property>
  3. <name>hadoop.security.auth_to_local.mechanism</name>
  4. <value>MIT</value>
  5. </property>
  6. <!-- Kerberos主体到系统用户的具体映射规则 -->
  7. <property>
  8. <name>hadoop.security.auth_to_local</name>
  9. <value>
  10. RULE:[2:$1/$2@$0]([ndj]n\/.*@EXAMPLE\.COM)s/.*/hdfs/
  11. RULE:[2:$1/$2@$0]([rn]m\/.*@EXAMPLE\.COM)s/.*/yarn/
  12. RULE:[2:$1/$2@$0](jhs\/.*@EXAMPLE\.COM)s/.*/mapred/
  13. DEFAULT
  14. </value>
  15. </property>
  16. <!-- 启用Hadoop集群Kerberos安全认证 -->
  17. <property>
  18. <name>hadoop.security.authentication</name>
  19. <value>kerberos</value>
  20. </property>
  21. <!-- 启用Hadoop集群授权管理 -->
  22. <property>
  23. <name>hadoop.security.authorization</name>
  24. <value>true</value>
  25. </property>
  26. <!-- Hadoop集群间RPC通讯设为仅认证模式 -->
  27. <property>
  28. <name>hadoop.rpc.protection</name>
  29. <value>authentication</value>
  30. </property>

2.hdfs-site.xml

[root@hadoop102 ~]# vim /opt/module/hadoop-3.1.3/etc/hadoop/hdfs-site.xml

增加以下内容

  1. <!-- 访问DataNode数据块时需通过Kerberos认证 -->
  2. <property>
  3. <name>dfs.block.access.token.enable</name>
  4. <value>true</value>
  5. </property>
  6. <!-- NameNode服务的Kerberos主体,_HOST会自动解析为服务所在的主机名 -->
  7. <property>
  8. <name>dfs.namenode.kerberos.principal</name>
  9. <value>nn/_HOST@EXAMPLE.COM</value>
  10. </property>
  11. <!-- NameNode服务的Kerberos密钥文件路径 -->
  12. <property>
  13. <name>dfs.namenode.keytab.file</name>
  14. <value>/etc/security/keytab/nn.service.keytab</value>
  15. </property>
  16. <!-- Secondary NameNode服务的Kerberos主体 -->
  17. <property>
  18. <name>dfs.secondary.namenode.keytab.file</name>
  19. <value>/etc/security/keytab/sn.service.keytab</value>
  20. </property>
  21. <!-- Secondary NameNode服务的Kerberos密钥文件路径 -->
  22. <property>
  23. <name>dfs.secondary.namenode.kerberos.principal</name>
  24. <value>sn/_HOST@EXAMPLE.COM</value>
  25. </property>
  26. <!-- NameNode Web服务的Kerberos主体 -->
  27. <property>
  28. <name>dfs.namenode.kerberos.internal.spnego.principal</name>
  29. <value>HTTP/_HOST@EXAMPLE.COM</value>
  30. </property>
  31. <!-- WebHDFS REST服务的Kerberos主体 -->
  32. <property>
  33. <name>dfs.web.authentication.kerberos.principal</name>
  34. <value>HTTP/_HOST@EXAMPLE.COM</value>
  35. </property>
  36. <!-- Secondary NameNode Web UI服务的Kerberos主体 -->
  37. <property>
  38. <name>dfs.secondary.namenode.kerberos.internal.spnego.principal</name>
  39. <value>HTTP/_HOST@EXAMPLE.COM</value>
  40. </property>
  41. <!-- Hadoop Web UI的Kerberos密钥文件路径 -->
  42. <property>
  43. <name>dfs.web.authentication.kerberos.keytab</name>
  44. <value>/etc/security/keytab/spnego.service.keytab</value>
  45. </property>
  46. <!-- DataNode服务的Kerberos主体 -->
  47. <property>
  48. <name>dfs.datanode.kerberos.principal</name>
  49. <value>dn/_HOST@EXAMPLE.COM</value>
  50. </property>
  51. <!-- DataNode服务的Kerberos密钥文件路径 -->
  52. <property>
  53. <name>dfs.datanode.keytab.file</name>
  54. <value>/etc/security/keytab/dn.service.keytab</value>
  55. </property>
  56. <!-- 配置NameNode Web UI 使用HTTPS协议 -->
  57. <property>
  58. <name>dfs.http.policy</name>
  59. <value>HTTPS_ONLY</value>
  60. </property>
  61. <!-- 配置DataNode数据传输保护策略为仅认证模式 -->
  62. <property>
  63. <name>dfs.data.transfer.protection</name>
  64. <value>authentication</value>
  65. </property>

3.yarn-site.xml

[root@hadoop102 ~]# vim /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml

增加以下内容

  1. <!-- Resource Manager 服务的Kerberos主体 -->
  2. <property>
  3. <name>yarn.resourcemanager.principal</name>
  4. <value>rm/_HOST@EXAMPLE.COM</value>
  5. </property>
  6. <!-- Resource Manager 服务的Kerberos密钥文件 -->
  7. <property>
  8. <name>yarn.resourcemanager.keytab</name>
  9. <value>/etc/security/keytab/rm.service.keytab</value>
  10. </property>
  11. <!-- Node Manager 服务的Kerberos主体 -->
  12. <property>
  13. <name>yarn.nodemanager.principal</name>
  14. <value>nm/_HOST@EXAMPLE.COM</value>
  15. </property>
  16. <!-- Node Manager 服务的Kerberos密钥文件 -->
  17. <property>
  18. <name>yarn.nodemanager.keytab</name>
  19. <value>/etc/security/keytab/nm.service.keytab</value>
  20. </property>

4.mapred-site.xml

[root@hadoop102 ~]# vim /opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml

增加以下内容

  1. <!-- 历史服务器的Kerberos主体 -->
  2. <property>
  3. <name>mapreduce.jobhistory.keytab</name>
  4. <value>/etc/security/keytab/jhs.service.keytab</value>
  5. </property>
  6. <!-- 历史服务器的Kerberos密钥文件 -->
  7. <property>
  8. <name>mapreduce.jobhistory.principal</name>
  9. <value>jhs/_HOST@EXAMPLE.COM</value>
  10. </property>

 5.分发以上修改的配置文件

[root@hadoop102 ~]# xsync /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml

[root@hadoop102 ~]# xsync /opt/module/hadoop-3.1.3/etc/hadoop/hdfs-site.xml

[root@hadoop102 ~]# xsync /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml

[root@hadoop102 ~]# xsync /opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml

2.3 配置HDFS使用HTTPS安全传输协议

1.生成密钥对

1)生成 keystore的密码及相应信息的密钥库

[root@hadoop102 ~]# keytool -keystore /etc/security/keytab/keystore -alias jetty -genkey -keyalg RSA

 查看密钥库里面的内容

[root@hadoop102 keytab]# keytool -keystore keystore -list

2)修改keystore文件的所有者和访问权限

[root@hadoop102 ~]# chown -R root:hadoop /etc/security/keytab/keystore

[root@hadoop102 ~]# chmod 660 /etc/security/keytab/keystore

3)将该证书分发到集群中的每台节点的相同路径

[root@hadoop102 ~]# xsync /etc/security/keytab/keystore

 4)修改hadoop配置文件ssl-server.xml.example

 修改文件名为ssl-server.xml

[root@hadoop102 hadoop]# mv ssl-server.xml.example ssl-server.xml
[root@hadoop102 hadoop]# vim ssl-server.xml

修改以下参数

  1. <!-- SSL密钥库路径 -->
  2. <property>
  3. <name>ssl.server.keystore.location</name>
  4. <value>/etc/security/keytab/keystore</value>
  5. </property>
  6. <!-- SSL密钥库密码 -->
  7. <property>
  8. <name>ssl.server.keystore.password</name>
  9. <value>123456</value>
  10. </property>
  11. <!-- SSL可信任密钥库路径 -->
  12. <property>
  13. <name>ssl.server.truststore.location</name>
  14. <value>/etc/security/keytab/keystore</value>
  15. </property>
  16. <!-- SSL密钥库中密钥的密码 -->
  17. <property>
  18. <name>ssl.server.keystore.keypassword</name>
  19. <value>123456</value>
  20. </property>
  21. <!-- SSL可信任密钥库密码 -->
  22. <property>
  23. <name>ssl.server.truststore.password</name>
  24. <value>123456</value>
  25. </property>

 分发

[root@hadoop102 hadoop]# xsync ssl-server.xml

2.4  配置Yarn使用LinuxContainerExecutor

1)修改所有节点的container-executor所有者和权限,要求其所有者为root,所有组为hadoop(启动NodeManger的yarn用户的所属组),权限为6050。其默认路径为$HADOOP_HOME/bin

[root@hadoop102 hadoop]# cd /opt/module/hadoop-3.1.3/bin/
[root@hadoop102 bin]# ll

[root@hadoop102 ~]# chown root:hadoop /opt/module/hadoop-3.1.3/bin/container-executor

[root@hadoop102 ~]# chmod 6050 /opt/module/hadoop-3.1.3/bin/container-executor

 hadoop103 和hadoop104做相同的操作。

2)修改所有节点的container-executor.cfg文件的所有者和权限,要求该文件及其所有的上级目录的所有者均为root,所有组为hadoop(启动NodeManger的yarn用户的所属组),权限为400。其默认路径为$HADOOP_HOME/etc/hadoop

[root@hadoop102 bin]# cd /opt/module/hadoop-3.1.3/etc/hadoop/

[root@hadoop102 ~]# chown root:hadoop /opt/module/hadoop-3.1.3/etc/hadoop/container-executor.cfg

[root@hadoop102 ~]# chown root:hadoop /opt/module/hadoop-3.1.3/etc/hadoop

[root@hadoop102 ~]# chown root:hadoop /opt/module/hadoop-3.1.3/etc

[root@hadoop102 ~]# chown root:hadoop /opt/module/hadoop-3.1.3

[root@hadoop102 ~]# chown root:hadoop /opt/module

[root@hadoop102 ~]# chmod 400 /opt/module/hadoop-3.1.3/etc/hadoop/container-executor.cfg

  hadoop103 和hadoop104做相同的操作。

在hadoop102上查看一下

3)修改$HADOOP_HOME/etc/hadoop/container-executor.cfg

[root@hadoop102 opt]# cd /opt/module/hadoop-3.1.3/etc/hadoop/
[root@hadoop102 hadoop]# vim container-executor.cfg

4)修改$HADOOP_HOME/etc/hadoop/yarn-site.xml文件

[root@hadoop102 ~]# vim $HADOOP_HOME/etc/hadoop/yarn-site.xml

增加以下内容

  1. <!-- 配置Node Manager使用LinuxContainerExecutor管理Container -->
  2. <property>
  3. <name>yarn.nodemanager.container-executor.class</name>
  4. <value>org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor</value>
  5. </property>
  6. <!-- 配置Node Manager的启动用户的所属组 -->
  7. <property>
  8. <name>yarn.nodemanager.linux-container-executor.group</name>
  9. <value>hadoop</value>
  10. </property>
  11. <!-- LinuxContainerExecutor脚本路径 -->
  12. <property>
  13. <name>yarn.nodemanager.linux-container-executor.path</name>
  14. <value>/opt/module/hadoop-3.1.3/bin/container-executor</value>
  15. </property>

5)分发container-executor.cfg和yarn-site.xml文件

[root@hadoop102 ~]# xsync $HADOOP_HOME/etc/hadoop/container-executor.cfg

[root@hadoop102 ~]# xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/710919
推荐阅读
相关标签
  

闽ICP备14008679号