1 創(chuàng)建Hadoop系統(tǒng)用戶
為Hadoop開啟Kerberos,需為不同服務(wù)準(zhǔn)備不同的用戶,啟動服務(wù)時需要使用相應(yīng)的用戶。須在所有節(jié)點(diǎn)創(chuàng)建以下用戶和用戶組。
創(chuàng)建hadoop組
[root@hadoop102 ~]# groupadd hadoop
?hadoop103和hadoop104做同樣的操作。
創(chuàng)建各用戶并設(shè)置密碼
[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各服務(wù)創(chuàng)建Kerberos主體(Principal)
主體格式如下:ServiceName/HostName@REALM,例如?dn/hadoop102@EXAMPLE.COM
1.各服務(wù)所需主體如下
2.創(chuàng)建主體
1)在所有節(jié)點(diǎn)創(chuàng)建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節(jié)點(diǎn)執(zhí)行
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執(zhí)行
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執(zhí)行
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.修改所有節(jié)點(diǎn)keytab文件的所有者和訪問權(quán)限
[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
增加以下內(nèi)容
<!-- Kerberos主體到系統(tǒng)用戶的映射機(jī)制 -->
<property>
<name>hadoop.security.auth_to_local.mechanism</name>
<value>MIT</value>
</property>
<!-- Kerberos主體到系統(tǒng)用戶的具體映射規(guī)則 -->
<property>
<name>hadoop.security.auth_to_local</name>
<value>
RULE:[2:$1/$2@$0]([ndj]n\/.*@EXAMPLE\.COM)s/.*/hdfs/
RULE:[2:$1/$2@$0]([rn]m\/.*@EXAMPLE\.COM)s/.*/yarn/
RULE:[2:$1/$2@$0](jhs\/.*@EXAMPLE\.COM)s/.*/mapred/
DEFAULT
</value>
</property>
<!-- 啟用Hadoop集群Kerberos安全認(rèn)證 -->
<property>
<name>hadoop.security.authentication</name>
<value>kerberos</value>
</property>
<!-- 啟用Hadoop集群授權(quán)管理 -->
<property>
<name>hadoop.security.authorization</name>
<value>true</value>
</property>
<!-- Hadoop集群間RPC通訊設(shè)為僅認(rèn)證模式 -->
<property>
<name>hadoop.rpc.protection</name>
<value>authentication</value>
</property>
2.hdfs-site.xml
[root@hadoop102 ~]# vim /opt/module/hadoop-3.1.3/etc/hadoop/hdfs-site.xml
增加以下內(nèi)容
<!-- 訪問DataNode數(shù)據(jù)塊時需通過Kerberos認(rèn)證 -->
<property>
<name>dfs.block.access.token.enable</name>
<value>true</value>
</property>
<!-- NameNode服務(wù)的Kerberos主體,_HOST會自動解析為服務(wù)所在的主機(jī)名 -->
<property>
<name>dfs.namenode.kerberos.principal</name>
<value>nn/_HOST@EXAMPLE.COM</value>
</property>
<!-- NameNode服務(wù)的Kerberos密鑰文件路徑 -->
<property>
<name>dfs.namenode.keytab.file</name>
<value>/etc/security/keytab/nn.service.keytab</value>
</property>
<!-- Secondary NameNode服務(wù)的Kerberos主體 -->
<property>
<name>dfs.secondary.namenode.keytab.file</name>
<value>/etc/security/keytab/sn.service.keytab</value>
</property>
<!-- Secondary NameNode服務(wù)的Kerberos密鑰文件路徑 -->
<property>
<name>dfs.secondary.namenode.kerberos.principal</name>
<value>sn/_HOST@EXAMPLE.COM</value>
</property>
<!-- NameNode Web服務(wù)的Kerberos主體 -->
<property>
<name>dfs.namenode.kerberos.internal.spnego.principal</name>
<value>HTTP/_HOST@EXAMPLE.COM</value>
</property>
<!-- WebHDFS REST服務(wù)的Kerberos主體 -->
<property>
<name>dfs.web.authentication.kerberos.principal</name>
<value>HTTP/_HOST@EXAMPLE.COM</value>
</property>
<!-- Secondary NameNode Web UI服務(wù)的Kerberos主體 -->
<property>
<name>dfs.secondary.namenode.kerberos.internal.spnego.principal</name>
<value>HTTP/_HOST@EXAMPLE.COM</value>
</property>
<!-- Hadoop Web UI的Kerberos密鑰文件路徑 -->
<property>
<name>dfs.web.authentication.kerberos.keytab</name>
<value>/etc/security/keytab/spnego.service.keytab</value>
</property>
<!-- DataNode服務(wù)的Kerberos主體 -->
<property>
<name>dfs.datanode.kerberos.principal</name>
<value>dn/_HOST@EXAMPLE.COM</value>
</property>
<!-- DataNode服務(wù)的Kerberos密鑰文件路徑 -->
<property>
<name>dfs.datanode.keytab.file</name>
<value>/etc/security/keytab/dn.service.keytab</value>
</property>
<!-- 配置NameNode Web UI 使用HTTPS協(xié)議 -->
<property>
<name>dfs.http.policy</name>
<value>HTTPS_ONLY</value>
</property>
<!-- 配置DataNode數(shù)據(jù)傳輸保護(hù)策略為僅認(rèn)證模式 -->
<property>
<name>dfs.data.transfer.protection</name>
<value>authentication</value>
</property>
3.yarn-site.xml
[root@hadoop102 ~]# vim /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml
增加以下內(nèi)容
<!-- Resource Manager 服務(wù)的Kerberos主體 -->
<property>
<name>yarn.resourcemanager.principal</name>
<value>rm/_HOST@EXAMPLE.COM</value>
</property>
<!-- Resource Manager 服務(wù)的Kerberos密鑰文件 -->
<property>
<name>yarn.resourcemanager.keytab</name>
<value>/etc/security/keytab/rm.service.keytab</value>
</property>
<!-- Node Manager 服務(wù)的Kerberos主體 -->
<property>
<name>yarn.nodemanager.principal</name>
<value>nm/_HOST@EXAMPLE.COM</value>
</property>
<!-- Node Manager 服務(wù)的Kerberos密鑰文件 -->
<property>
<name>yarn.nodemanager.keytab</name>
<value>/etc/security/keytab/nm.service.keytab</value>
</property>
4.mapred-site.xml
[root@hadoop102 ~]# vim /opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml
增加以下內(nèi)容
<!-- 歷史服務(wù)器的Kerberos主體 -->
<property>
<name>mapreduce.jobhistory.keytab</name>
<value>/etc/security/keytab/jhs.service.keytab</value>
</property>
<!-- 歷史服務(wù)器的Kerberos密鑰文件 -->
<property>
<name>mapreduce.jobhistory.principal</name>
<value>jhs/_HOST@EXAMPLE.COM</value>
</property>
?5.分發(fā)以上修改的配置文件
[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安全傳輸協(xié)議
1.生成密鑰對
1)生成?keystore的密碼及相應(yīng)信息的密鑰庫
[root@hadoop102 ~]# keytool -keystore /etc/security/keytab/keystore -alias jetty -genkey -keyalg RSA
?查看密鑰庫里面的內(nèi)容
[root@hadoop102 keytab]# keytool -keystore keystore -list
2)修改keystore文件的所有者和訪問權(quán)限
[root@hadoop102 ~]# chown -R root:hadoop /etc/security/keytab/keystore
[root@hadoop102 ~]# chmod 660 /etc/security/keytab/keystore
3)將該證書分發(fā)到集群中的每臺節(jié)點(diǎn)的相同路徑
[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
修改以下參數(shù)
<!-- SSL密鑰庫路徑 -->
<property>
<name>ssl.server.keystore.location</name>
<value>/etc/security/keytab/keystore</value>
</property>
<!-- SSL密鑰庫密碼 -->
<property>
<name>ssl.server.keystore.password</name>
<value>123456</value>
</property>
<!-- SSL可信任密鑰庫路徑 -->
<property>
<name>ssl.server.truststore.location</name>
<value>/etc/security/keytab/keystore</value>
</property>
<!-- SSL密鑰庫中密鑰的密碼 -->
<property>
<name>ssl.server.keystore.keypassword</name>
<value>123456</value>
</property>
<!-- SSL可信任密鑰庫密碼 -->
<property>
<name>ssl.server.truststore.password</name>
<value>123456</value>
</property>
?分發(fā)
[root@hadoop102 hadoop]# xsync ssl-server.xml
2.4? 配置Yarn使用LinuxContainerExecutor
1)修改所有節(jié)點(diǎn)的container-executor所有者和權(quán)限,要求其所有者為root,所有組為hadoop(啟動NodeManger的yarn用戶的所屬組),權(quán)限為6050。其默認(rèn)路徑為$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)修改所有節(jié)點(diǎn)的container-executor.cfg文件的所有者和權(quán)限,要求該文件及其所有的上級目錄的所有者均為root,所有組為hadoop(啟動NodeManger的yarn用戶的所屬組),權(quán)限為400。其默認(rèn)路徑為$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
增加以下內(nèi)容
<!-- 配置Node Manager使用LinuxContainerExecutor管理Container -->
<property>
<name>yarn.nodemanager.container-executor.class</name>
<value>org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor</value>
</property>
<!-- 配置Node Manager的啟動用戶的所屬組 -->
<property>
<name>yarn.nodemanager.linux-container-executor.group</name>
<value>hadoop</value>
</property>
<!-- LinuxContainerExecutor腳本路徑 -->
<property>
<name>yarn.nodemanager.linux-container-executor.path</name>
<value>/opt/module/hadoop-3.1.3/bin/container-executor</value>
</property>
5)分發(fā)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
文章來源:http://www.zghlxwxcb.cn/news/detail-414235.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-414235.html
到了這里,關(guān)于用戶認(rèn)證——Kerberos集成Hadoop的配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!