在配置hadoop0.23.8时出现以下错误“datanode拒绝与namenode通信”

f8rj6qna  于 2021-06-04  发布在  Hadoop
关注(0)|答案(5)|浏览(302)

我正试图在我的macbook上配置hadoop0.23.8,但出现以下异常

org.apache.hadoop.hdfs.server.protocol.DisallowedDatanodeException: Datanode denied communication with namenode: 192.168.1.13:50010
at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.registerDatanode(DatanodeManager.java:549)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:2548)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.registerDatanode(NameNodeRpcServer.java:784)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:394)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1571)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1567)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1262)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1565)

我的core-site.xml如下所示

<configuration>
<property>
<name>dfs.federation.nameservices</name>
<value>ns1</value>
</property>

<property>
<name>dfs.namenode.rpc-address.ns1</name>
<value>192.168.1.13:54310</value>
</property>

<property>
<name>dfs.namenode.http-address.ns1</name>
<value>192.168.1.13:50070</value>
</property>

<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.1.13:50090</value>
</property>
</configuration>

你知道我做错了什么吗?

ukxgm1gy

ukxgm1gy1#

仅供参考。我也有同样的问题,我已经认识到,有一个在我的奴隶主机名输入错误。反之亦然,节点本身可能有错误的主机名。

uoifb46i

uoifb46i2#

我有这个问题。
core-site.xml中的早期配置是这样的。

<property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:12345</value>
</property>

后来我用我的主机名(pc name)修改了localhost name

<property>
  <name>fs.default.name</name>
  <value>hdfs://cnu:12345</value>
</property>

它对我有用。

axzmvihb

axzmvihb3#

我在hadoop2.6.0中遇到了同样的问题,我的解决方案与tariq的答案不同。
我无法在/etc/hosts中列出ip主机Map,因为我使用dhcp动态设置ip。
问题是我的dns不允许反向dns查找(即查找给定ip的主机名),而hdfs在datanode尝试向namenode注册时默认使用反向dns查找。幸运的是,可以通过在hdfs-site.xml中将此属性“dfs.namenode.datanode.registration.ip hostname check”设置为false来禁用此行为
如何知道您的dns不允许反向查找?在ubuntu中,答案是使用命令“host”。如果可以解析主机名,则启用反向查找。如果失败,则禁用反向查找。
参考文献:1。http://rrati.github.io/blog/2014/05/07/apache-hadoop-plus-docker-plus-fedora-running-images/ 2https://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

ha5z0ras

ha5z0ras4#

在我看来是名字解析问题。可能的原因:

Machine is listed in the file defined by dfs.hosts.exclude

dfs.hosts is used and the machine is not listed within that file

还要确保主机文件中列出了机器的ip+主机名。
hth公司

8qgya5xd

8qgya5xd5#

2.6.0也有同样的问题,shamouda的答案解决了这个问题(我没有使用 dfs.hosts 所以这不是答案。我确实加了一句

<property>
  <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
  <value>false</value>
</property>

到hdfs-site.xml,这就足够解决这个问题了。

相关问题