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

Ubuntu环境下HDFS Namenode与Datanode免密访问配置遇权限报错求助

解决Hadoop启动权限拒绝与本地免密访问问题

一、解决root用户本地免密SSH登录(适配当前配置)

如果坚持使用root用户运行Hadoop守护进程,按以下步骤配置本地免密:

  • 切换到root用户:
    sudo su - root
    
  • 生成无密码SSH密钥对:
    ssh-keygen -t rsa -P ""
    
    按回车确认所有默认选项即可。
  • 将公钥添加到授权列表:
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    
  • 设置严格的文件权限(SSH对权限要求苛刻,权限过宽会直接拒绝):
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    
  • 测试免密登录:
    ssh localhost
    
    若无需输入密码直接进入root的shell,说明配置成功。

完成后执行sudo ./start-all.sh即可启动Hadoop。若sudo执行时环境变量未被继承,可将Hadoop相关环境变量添加到/etc/profile或root用户的~/.bashrc中。

二、更安全的方案:使用普通用户运行Hadoop

不推荐用root运行Hadoop(存在安全风险),建议改用普通用户imran运行:

  • 注释或删除环境变量中所有HDFS_*_USER=root和YARN_*_USER=root的配置
  • 确保Hadoop目录及数据目录的所有者为imran:
    sudo chown -R imran:imran ~/Downloads/Compressed/hadoop-3.3.5
    
    若已配置HDFS数据存储目录(如dfs.datanode.data.dir),也需同步修改该目录的所有者为imran。
  • 配置imran用户的本地免密SSH:
    ssh-keygen -t rsa -P ""
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    
  • 测试免密登录:ssh localhost,确认无需密码即可登录
  • 直接运行启动命令(无需sudo):
    ./start-all.sh
    

错误原因说明

  • 直接用imran用户执行./start-all.sh时,因环境变量指定守护进程需以root运行,Hadoop检查当前用户非root,触发权限错误
  • 用sudo ./start-all.sh时,Hadoop尝试以root用户SSH到localhost,但root用户未配置本地免密登录,导致Permission denied

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:52:34