在 CentOS 上启用 HDFS 安全模式(Security / Kerberos),通常是指开启 HDFS 安全认证(SASL/Kerberos),而不是单纯进入 safemode。下面按生产常用方式说明。
krb5-serveryum install -y krb5-server krb5-workstation krb5-libs
配置:
vi /etc/krb5.conf
示例:
[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
EXAMPLE.COM = {
kdc = kdc.example.com
admin_server = kdc.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
在 KDC 上执行:
kadmin.local
addprinc -randkey hdfs/namenode.example.com@EXAMPLE.COM
addprinc -randkey hdfs/datanode.example.com@EXAMPLE.COM
导出 keytab:
ktadd -k /etc/security/keytabs/hdfs.keytab hdfs/namenode.example.com
ktadd -k /etc/security/keytabs/hdfs.keytab hdfs/datanode.example.com
权限:
chown hdfs:hadoop /etc/security/keytabs/hdfs.keytab
chmod 400 /etc/security/keytabs/hdfs.keytab
core-site.xml<property>
<name>hadoop.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hadoop.security.authorization</name>
<value>true</value>
</property>
hdfs-site.xml<property>
<name>dfs.namenode.kerberos.principal</name>
<value>hdfs/namenode.example.com@EXAMPLE.COM</value>
</property>
<property>
<name>dfs.namenode.keytab.file</name>
<value>/etc/security/keytabs/hdfs.keytab</value>
</property>
<property>
<name>dfs.datanode.kerberos.principal</name>
<value>hdfs/datanode.example.com@EXAMPLE.COM</value>
</property>
<property>
<name>dfs.datanode.keytab.file</name>
<value>/etc/security/keytabs/hdfs.keytab</value>
</property>
<property>
<name>dfs.block.access.token.enable</name>
<value>true</value>
</property>
先获取凭证(测试):
kinit hdfs/namenode.example.com -k -t /etc/security/keytabs/hdfs.keytab
启动:
start-dfs.sh
检查:
hdfs dfs -ls /
hdfs getconf -confKey hadoop.security.authentication
返回:
kerberos
❌ “启 hdfs 安全” ≠ hdfs dfsadmin -safemode enter
safemode 只是只读维护状态如果你愿意,我可以:
直接告诉我你的 Hadoop 版本和发行版即可。