温馨提示×

centos hdfs SSH如何配

小樊
63
2026-09-18 13:18:44
栏目: 智能运维

下面按**“在 CentOS 上配置 HDFS 所需 SSH(无密码登录)”**来理解你的问题,这是搭建 Hadoop/HDFS 最基础的一步。


一、前提说明

  • HDFS(NameNode / DataNode)节点之间需要通过 SSH 通信
  • 一般要求:NameNode 能 SSH 无密码登录所有 DataNode(也包括自己)
  • 系统:CentOS 7 / 8

二、安装 SSH(CentOS)

sudo yum install -y openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd

三、创建 Hadoop 用户(推荐)

useradd hadoop
passwd hadoop

后续操作建议在 hadoop 用户下进行。


四、生成 SSH 密钥(在 NameNode 上)

切换到 hadoop 用户:

su - hadoop

生成密钥(一路回车):

ssh-keygen -t rsa

生成内容:

  • ~/.ssh/id_rsa(私钥)
  • ~/.ssh/id_rsa.pub(公钥)

五、配置免密登录

1️⃣ 本机免密(NameNode 自己)

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

测试:

ssh localhost

2️⃣ 到其他 DataNode 节点

在 NameNode 执行:

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

或手动复制:

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

在 DataNode 上:

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

六、SSH 配置文件(可选但推荐)

编辑 ~/.ssh/config:

Host namenode
    HostName 192.168.1.10
    User hadoop

Host datanode1
    HostName 192.168.1.11
    User hadoop

七、关闭 SELinux / 防火墙(测试环境)

sudo setenforce 0
sudo systemctl stop firewalld

⚠️ 生产环境请放行 22 端口而不是关闭防火墙。


八、Hadoop 中相关配置(示例)

core-site.xml

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

workers(旧版 slaves)

datanode1
datanode2

九、验证 HDFS 启动

start-dfs.sh
jps

应看到:

  • NameNode
  • DataNode
  • SecondaryNameNode

十、常见问题

❌ Permission denied (publickey)
→ authorized_keys 权限不对(必须是 600)

❌ SSH 很慢
→ 修改 /etc/ssh/sshd_config

UseDNS no

如果你是指:

  • 客户端通过 SSH 访问 HDFS
  • HDFS over SSH tunnel
  • Kerberos + SSH
  • Docker / K8s 中的 HDFS SSH

可以告诉我具体场景,我给你更精准的配置方案。

0 踩