在 CentOS 上配置 HDFS(Hadoop)免密登录,本质就是配置 SSH 公钥认证,让 NameNode 能无密码 SSH 到各个 DataNode(以及自身)。
下面以 Hadoop 用户(如 hadoop) 为例,一步一步说明。
hadoop)su - hadoop
ssh-keygen -t rsa
一路回车即可,生成:
~/.ssh/id_rsa~/.ssh/id_rsa.pubcat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
测试:
ssh localhost
不需要密码即成功。
假设 DataNode 主机名:
ssh-copy-id hadoop@slave1
ssh-copy-id hadoop@slave2
或手动方式:
scp ~/.ssh/id_rsa.pub hadoop@slave1:~/
ssh hadoop@slave1
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ssh slave1
ssh slave2
都不需要密码 即配置成功。
start-dfs.sh
jps
应能看到:
检查:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
getenforce
若为 Enforcing,可临时关闭测试:
setenforce 0
systemctl stop firewalld
HDFS 免密登录 = Hadoop 用户 SSH 公钥互信
如果你需要 集群规模配置 / 多用户 / root 免密 / Ansible 批量配置,可以继续问我。