为什么在Hadoop中尝试连接NameNode和DataNode时“权限被拒绝”?

Why is "permission denied" when I try to connect to NameNode and DataNode in Hadoop?

提问人:MattNewman2003 提问时间:11/2/2023 最后编辑:MattNewman2003 更新时间:11/2/2023 访问量:37

问:

我是Hadoop的新手,一直在尝试在Oracle VirtualBox中使用两个Ubuntu虚拟机实现多节点集群。一台机器是“主机器”,另一台机器是“从机器”。

我已经设法在两台机器之间获得无密码 SSH。在生成公钥后,我通过键入“ssh [MachineUsername]”来测试这一点,在两端,它只是自动将我登录到另一台机器上,而不会要求输入密码或抛出任何类型的错误;从我的角度来看,它似乎工作得很好。

但是,当我尝试在主虚拟机上运行 sbin/start-all.sh 时,它返回了以下错误消息:

Starting namenodes on [bda-VirtualBox]
bda-VirtualBox: root@bda-virtualbox: Permission denied (publickey, password).

数据节点和辅助名称节点也出现了同样的错误。

我环顾互联网,最初从互联网研究中认为,这个问题可能与我初始化加密密钥的方式有关。按照有关如何解决“权限被拒绝”问题 (https://dzone.com/articles/resolving-permission-issue-in-multi-node-hadoop-cl) 的 Internet 教程的说明,我随后使用以下命令行命令在每个 VM 中实现了加密密钥:

$ ssh-keygen -t rsa -P ” -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys

为了在两个 VM 之间启用 SSH,我还在每个 VM 中分别实现了以下代码行:

$ssh-copy-id -i ~/.ssh/id_rsa.pub [OtherVMUsername]

当我尝试这样做时,仍然返回相同的错误,因此按照上述教程的说明进一步操作,我更改了每个 VM 中sshd_config文件的设置,以便:

  • PubKeyAuthentication 未注释,值为“yes”
  • PasswordAuthentication 未注释,值为“yes”
  • UsePAM 未注释,值为“否”

然后,我重新启动了每个VM的SSH,并重试了一次(命令如下):

sudo service ssh restart

我使用与以前相同的 start-all.sh 文件重新启动了集群,但仍然返回了相同的错误。

为了清楚起见,在所有情况下,我都使用以下命令在启动 start-all.sh 之前初始化了 namenode:

./hadoop namenode -format

我的 namenode 用户、datanode 用户、辅助 namenode 用户、yarn 资源管理器用户和 yarn 节点管理器用户在两个 VM 中都设置为 root hdfs-env.sh。

防火墙在两者中也被禁用。

但是,无论我对 SSH 设置做了什么,错误似乎都没有消失。

有谁知道我可能哪里出错了,因为我承认有点困惑?

Linux Ubuntu Hadoop SSH

评论


答: 暂无答案