aws上的hadoop提供“java.net.connectexception connect拒绝”

brqmpdu1  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(630)

几天前我在aws上安装了hadoop,并运行了wordcount测试。但这项任务在40分钟内没有取得任何进展。任何任务包括上传的任务都不起作用。我有1个namenode(主节点)和2个datanode(从节点)。
我查阅日志文件,首先resourcemanager的日志显示:

WARN org.apache.hadoop.ipc.Client: Failed to connect to server: Slave2/172.31.25.60:38729:   And Failed to connect to server: Slave1/balabalablabla

我还注意到日志中的错误:

java.net.ConnectException: Connection refused

然后我下载了执行任务的datanode的日志,在阅读了日志之后我猜datanode2已经完成了任务,但是它当时无法链接到namenode。
以下是日志文件:yarn-ubuntu-resourcemanager-ambari.master.com:https://github.com/mastermiror/hadoop/blob/master/yarn-ubuntu-resourcemanager-ambari.master.com.log (14.6mb只是忽略了日志的另一部分我忘记清理了,看最新的部分就可以了)
datanode2的日志(wordcount任务在其上运行):mapreducetask的日志(可能您认为每个目录中应该有3个文件,但其中3个文件是0 kb,因此它们没有上载到github)
这是我的配置文件
hdfs-site.xml:

<configuration>
<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>Master:50090</value>
 </property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>/home/ubuntu/hadoopdata/namenode</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>/home/ubuntu/hadoopdata/datanode</value>
</property>
</configuration>

core-site.xml:

<configuration>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master/</value>
</property>
</configuration>
</configuration>

yarn-site.xml:

<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master</value>
</property>

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

</configuration>

mapred-site.xml:

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
qxgroojn

qxgroojn1#

这应该很容易解决。当hadoop进程可以在hdfs中创建一个新文件,但该文件的长度为0时,这通常意味着该进程可以与namenode(创建该文件)通信,但当hdfs协议将该进程重定向到datanode(存储数据)时,它将失败。
在aws中,这通常意味着您的安全组正在阻止master<->slave和slave<->slave通信。创建一个新的安全组,为所有协议启用所有端口,源cidr是vpc专用网络(类似于10.0.0.0/16),并将此安全组分配给集群中的每个节点。此安全组将允许每个节点相互通信。确保附加到同一群集的其他安全组中没有任何会阻止节点通信的拒绝规则。
将hadoop设置为一个小型集群非常容易。坚持下去直到你成功。这个过程将帮助您理解所有部分是如何结合在一起的,最重要的是,您将更加熟悉hadoop配置文件。但是,我建议首先从单节点集群开始,然后创建一个真正的集群作为下一步。

相关问题