EC2启动Hadoop时出现"Permission denied (publickey)"的错误提示。

5

我的经理为我提供了一台带有ppk的Amazon实例,我能够登录;试图安装hadoop;进行了必要的配置更改,如:将masters和slaves文件从localhost编辑为EC2实例名称,将必要的属性添加到mapred-site.xml/hdfs-site.xml/core-site.xml文件中,将namenode格式化成HDFS。现在,当我运行start-dfs.sh脚本时,我会得到以下错误。

starting namenode, logging to /home/ubuntu/hadoop/libexec/../logs/hadoop-ubuntu-namenode-domU-12-31-39-07-60-A9.out 无法验证主机“XXX.amazonaws.com(一些IP)”的真实性。

确定要继续连接吗(yes/no)? yes XXX.amazonaws.com: Warning: Permanently added 'XXX.amazonaws.com,' (ECDSA) to the list of known hosts. XXX.amazonaws.com: Permission denied (publickey). XXX.amazonaws.com: Permission denied (publickey).

目前,主节点和从节点将是同一台机器。

XXX是实例名称,某个IP是它的IP。出于安全原因,遮蔽它们。

我完全不知道如何使用EC2实例、SSH等,只需要在其中运行一个简单的MapReduce程序。

请给予建议。


只是提一下,这听起来非常像Austin Ouyang在http://insightdataengineering.com/blog/hadoopdevops/上的教程。 - Samuel
1个回答

4
Hadoop使用SSH将信息从主节点传递到从节点。看起来您的节点正在尝试通过SSH相互交流,但尚未配置。为了通信,Hadoop主节点需要无密码SSH访问从节点。无密码访问非常有用,这样每次尝试运行作业时,您不必再次为每个从节点输入密码。这将非常繁琐。在继续之前,看起来您需要在节点之间设置此项。
我建议您查看此指南并查找名为“配置SSH”的部分。它详细说明了如何完成此操作。

我有另一个问题...我的datanode无法启动,日志显示 错误org.apache.hadoop.hdfs.server.datanode.DataNode: java.net.BindException: Problem binding to /0.0.0.0:50010 : Address already in use 我尝试删除tmp目录中的data/name文件夹,重新格式化hdfs,运行start-dfs.sh脚本。虽然NN启动了,SNN也启动了,但是几乎立即出现以下消息并关闭 信息org.apache.hadoop.http.HttpServer: Port returned by webServer.getConnectors()[0].getLocalPort() before open() is -1. Opening the listener on 50090。 - user149332
尝试了 netstat -nl | grep 50010;它显示有一些进程在运行,但找不到 pid。jps 没有显示任何进程,因此尝试 "sudo jps",结果显示有 DN 和 SNN 进程正在运行;于是用 sudo kill -9 <pid> 杀掉了这些进程。现在启动我的 Hadoop,一切正常工作。 - user149332

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接