You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hadoop双节点集群Windows DataNode启动认证失败如何解决

解决跨平台Hadoop集群SSH认证失败问题

这个问题本质是Hadoop启动远程节点依赖SSH免密登录,虽然你没用到Kerberos,但Linux节点无法通过SSH无密码访问Windows节点,导致启动DataNode时报认证失败。下面是一步步的解决方案:

1. 确保Windows节点已安装并启用OpenSSH Server

Windows默认没有开启SSH服务,这是核心前提:

  • 打开Windows设置 → 应用 → 可选功能 → 添加功能,找到「OpenSSH服务器」并安装
  • 安装完成后,按下Win+R输入services.msc,找到「OpenSSH SSH Server」服务,设置为「自动」并启动它

2. 配置Linux到Windows的SSH免密登录

生成SSH密钥对(如果还没有)

在Linux节点的终端执行:

ssh-keygen -t rsa

全程按回车即可,默认会在~/.ssh/目录生成id_rsa(私钥)和id_rsa.pub(公钥)。

复制公钥到Windows节点

你有两种方式:

  • 方式一:用ssh-copy-id(推荐,如果支持)
    执行命令:
    ssh-copy-id <Windows用户名>@hadoopslave01
    
    输入Windows用户的密码完成复制,这样公钥会自动写入Windows的C:\Users\<你的用户名>\.ssh\authorized_keys文件。
  • 方式二:手动复制
    在Linux上打开~/.ssh/id_rsa.pub,复制全部内容;然后在Windows上创建C:\Users\<你的用户名>\.ssh\authorized_keys文件(注意文件名是authorized_keys,没有后缀),把复制的公钥粘贴进去,保存。

关键:修复Windows端公钥文件权限

Windows对文件权限要求很严格,authorized_keys必须只有当前用户能访问,否则SSH会拒绝:

  • 右键authorized_keys文件 → 属性 → 安全 → 高级
  • 点击「禁用继承」,选择「删除所有继承的权限」
  • 点击「添加」,选择当前Windows用户,给它「完全控制」权限,其他用户一律删除

3. 测试SSH免密登录

在Linux节点执行:

ssh <Windows用户名>@hadoopslave01

如果能直接进入Windows的命令行(不需要输密码),说明免密配置成功了。如果还是失败,排查以下点:

  • 检查Windows防火墙是否允许22端口入站:可以临时关闭防火墙测试,或者添加规则允许SSH(22端口)
  • 确认Linux能解析hadoopslave01:在Linux的/etc/hosts文件里添加一行Windows节点IP hadoopslave01
  • 如果用了WSL的Linux,确保WSL和Windows处于同一网络(比如用桥接模式),能ping通Windows节点

4. 检查Hadoop配置细节

  • 确认workers(Hadoop 3.x)或slaves(Hadoop 2.x)文件里的主机名正确,比如如果Windows用户名不是Linux的用户名,可能需要写<Windows用户名>@hadoopslave01
  • 可以在hadoop-env.sh里添加一行,跳过主机密钥检查:
    export HADOOP_SSH_OPTS="-o StrictHostKeyChecking=no"
    

完成以上步骤后,再执行start-dfs.sh应该就能正常启动Windows节点的DataNode了。

内容的提问来源于stack exchange,提问作者Vish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:26:30