启动HDFS报错localhost: Permission denied publickey,password

启动HDFS报错

dblab@dblab-Vmware:/usr/local/hadoop$ ./sbin/start-dfs.sh
Starting namenodes on [localhost]
localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
localhost: Permission denied (publickey,password).
Starting datanodes
localhost: Permission denied (publickey,password).
Starting secondary namenodes [dblab-Vmware]
dblab-Vmware: Warning: Permanently added 'dblab-vmware' (ECDSA) to the list of known hosts.
dblab-Vmware: Permission denied (publickey,password).

以下是一些可能的解决方法:

检查SSH配置

  • 确保SSH服务已安装并运行:在Ubuntu系统中,可以使用以下命令检查SSH服务的状态,如果未安装则进行安装。
sudo service ssh status
# 如果未安装,使用以下命令安装
sudo apt-get install openssh-server
  • 生成SSH密钥对:如果尚未生成SSH密钥对,需要在启动DFS的用户(这里是 dblab)下生成。在终端中执行以下命令:
ssh-keygen -t rsa

在生成过程中,可以直接按回车键使用默认设置,这将在 ~/.ssh/ 目录下生成 id_rsa(私钥)和 id_rsa.pub(公钥)文件。

  • 将公钥添加到授权列表:将生成的公钥内容添加到 authorized_keys 文件中,以便实现无密码登录。可以使用以下命令将公钥内容追加到 authorized_keys 文件中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

同时,确保 ~/.ssh 目录和 authorized_keys 文件的权限设置正确,一般来说,~/.ssh 目录的权限应该是 700authorized_keys 文件的权限应该是 600。可以使用以下命令设置权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

检查Hadoop配置文件中的用户和权限设置

  • 检查hadoop-env.sh文件:确保其中设置的 HDFS_NAMENODE_USERHDFS_DATANODE_USERHDFS_SECONDARYNAMENODE_USER 等环境变量与你当前登录的用户(dblab)一致,如果不一致,需要修改为正确的用户名。
  • 检查文件和目录权限:确保Hadoop安装目录(/usr/local/hadoop)及其子目录和文件的权限设置正确,启动DFS的用户(dblab)应该对这些文件和目录具有适当的读写和执行权限。可以使用以下命令递归地设置权限:
sudo chown -R dblab:dblab /usr/local/hadoop
sudo chmod -R 755 /usr/local/hadoop

检查主机名和IP地址配置

  • 检查/etc/hosts文件:确保其中正确配置了主机名与IP地址的映射关系,特别是对于 localhostdblab-Vmware 的映射。例如,应该有类似以下的条目:
127.0.0.1       localhost
<你的虚拟机IP地址>       dblab-Vmware
  • 检查Hadoop配置文件中的主机名设置:在 core-site.xmlhdfs-site.xml 等配置文件中,确保配置的主机名与实际的主机名或IP地址一致。

完成上述检查和设置后,再次尝试启动DFS:

./sbin/start-dfs.sh

更多推荐