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 - 测试免密登录:
若无需输入密码直接进入root的shell,说明配置成功。ssh localhost
完成后执行sudo ./start-all.sh即可启动Hadoop。若sudo执行时环境变量未被继承,可将Hadoop相关环境变量添加到/etc/profile或root用户的~/.bashrc中。
二、更安全的方案:使用普通用户运行Hadoop
不推荐用root运行Hadoop(存在安全风险),建议改用普通用户imran运行:
- 注释或删除环境变量中所有
HDFS_*_USER=root和YARN_*_USER=root的配置 - 确保Hadoop目录及数据目录的所有者为imran:
若已配置HDFS数据存储目录(如sudo chown -R imran:imran ~/Downloads/Compressed/hadoop-3.3.5dfs.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
相关产品推荐
相关产品推荐

