温馨提示×

centos hdfs怎样配免密

小樊
39
2026-10-12 05:51:22
栏目: 智能运维

在 CentOS 上配置 HDFS(Hadoop)SSH 免密登录,通常是 NameNode 到 DataNode / 自身 的免密。下面按最常用、最稳妥的方式来说明。


一、前提说明

  • HDFS 一般使用 SSH(默认 22 端口)
  • 需要 NameNode 能免密登录自己 + 所有 DataNode
  • 用户一般是 hadoop 或 root(生产建议普通用户)

二、在 NameNode 上生成密钥(只需一次)

ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa

生成后会有:

~/.ssh/id_rsa      # 私钥
~/.ssh/id_rsa.pub  # 公钥

三、配置本机免密(NameNode → NameNode)

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

测试:

ssh localhost

无需密码即成功。


四、配置到其他 DataNode 免密

方法 1:手动拷贝(推荐理解原理)

在 NameNode 上执行:

ssh-copy-id hadoop@datanode1
ssh-copy-id hadoop@datanode2

如果是 root:

ssh-copy-id root@datanode1

输入一次密码后,以后免密。


方法 2:手动复制(无 ssh-copy-id 时)

在 NameNode:

scp ~/.ssh/id_rsa.pub hadoop@datanode1:/tmp/

在 DataNode:

mkdir -p ~/.ssh
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

五、关闭 SELinux & 防火墙(CentOS 常见坑)

1. 防火墙

systemctl stop firewalld
systemctl disable firewalld

2. SELinux

setenforce 0

永久关闭:

vi /etc/selinux/config
SELINUX=disabled

六、Hadoop 相关配置(确认)

core-site.xml

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://namenode:9000</value>
</property>

hdfs-site.xml

<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>namenode:50090</value>
</property>

workers(Hadoop 3+)

datanode1
datanode2

七、启动 HDFS 验证

在 NameNode:

start-dfs.sh

查看进程:

jps

NameNode / DataNode 正常即说明免密 OK。


八、常见问题排查

1. 还是要密码

  • ~/.ssh 权限不对
  • authorized_keys 权限不是 600
  • 用户搞错(root vs hadoop)

2. Permission denied (publickey)

vi /etc/ssh/sshd_config

确认:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

重启:

systemctl restart sshd

如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • Hadoop 版本(2.x / 3.x)
  • 单节点 / 集群

我可以给你 精确命令版配置。

0 踩