在centos系统上部署安全的hadoop分布式文件系统(hdfs),需要仔细配置kerberos和hdfs权限。以下步骤将指导您完成此过程:
第一步:安装和配置Kerberos
Kerberos是hadoop安全性的基石。首先,安装Kerberos软件包:
sudo yum install krb5-server krb5-workstation krb5-libs
接下来,配置/etc/krb5.conf文件。 替换YOUR.REALM.COM,kdc.your.realm.com为您的实际Kerberos领域和KDC主机名:
[libdefaults] default_realm = YOUR.REALM.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] YOUR.REALM.COM = { kdc = kdc.your.realm.com:88 admin_server = kdc.your.realm.com:749 } [domain_realm] .your.realm.com = YOUR.REALM.COM your.realm.com = YOUR.REALM.COM
启动Kerberos服务:
sudo systemctl start krb5kdc sudo systemctl start kadmind
第二步:配置Hadoop使用Kerberos
修改Hadoop的核心配置文件core-site.xml和hdfs-site.xml。 同样,请将YOUR.REALM.COM替换为您的实际Kerberos领域。 /etc/security/keytabs/hdfs.headless.keytab 是关键的keytab文件路径,确保其存在且拥有正确的权限。
core-site.xml:
<configuration> <property> <name>hadoop.security.authentication</name> <value>kerberos</value> </property> <property> <name>hadoop.security.authorization</name> <value>true</value> </property> <property> <name>hadoop.security.auth_to_local</name> <value>RULE:[1:$1@$0](.*@YOUR.REALM.COM)s/@.*//</value> </property> </configuration>
hdfs-site.xml:
<configuration> <property> <name>dfs.namenode.kerberos.principal</name> <value>nn/_HOST@YOUR.REALM.COM</value> </property> <property> <name>dfs.namenode.keytab.file</name> <value>/etc/security/keytabs/hdfs.headless.keytab</value> </property> <property> <name>dfs.datanode.kerberos.principal</name> <value>dn/_HOST@YOUR.REALM.COM</value> </property> <property> <name>dfs.datanode.keytab.file</name> <value>/etc/security/keytabs/hdfs.headless.keytab</value> </property> <property> <name>dfs.namenode.http-kerberos.principal</name> <value>nn/_HOST@YOUR.REALM.COM</value> </property> <property> <name>dfs.namenode.http-kerberos.keytab</name> <value>/etc/security/keytabs/hdfs.headless.keytab</value> </property> </configuration>
第三步:获取Kerberos票据
使用kinit命令获取Kerberos票据:
kinit your_username@YOUR.REALM.COM
将your_username替换为您的Kerberos用户名。
第四步:格式化HDFS并启动集群
格式化HDFS:
hdfs namenode -format
启动HDFS集群:
start-dfs.sh
第五步:启用HDFS安全策略
在hdfs-site.xml中启用安全策略:
<property> <name>dfs.permissions.enabled</name> <value>true</value> </property> <property> <name>dfs.namenode.acls.enabled</name> <value>true</value> </property> <property> <name>dfs.datanode.acls.enabled</name> <value>true</value> </property>
第六步:配置HDFS权限 (可选)
使用hdfs dfsadmin命令设置HDFS权限:
hdfs dfsadmin -setPermission "/path/to/directory"
第七步:验证配置
尝试访问HDFS:
hdfs dfs -ls /
如果成功,则表明HDFS安全策略配置成功。 请注意,这只是一个基本的配置指南,您可能需要根据您的具体环境和安全需求进行调整。 确保所有节点都已正确配置,并且Kerberos密钥表文件正确放置并拥有正确的权限。 任何错误都可能导致HDFS无法启动或访问。