16

Macbook で Hadoop 0.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>

私が間違っているかもしれないことについてのアイデアはありますか?

4

5 に答える 5

7

Hadoop 2.6.0 でも同じ問題が発生し、私の場合の解決策は Tariq の回答とは異なりました。

IP を動的に設定するために DHCP を使用しているため、/etc/hosts に IP-Host マッピングをリストできませんでした。

問題は、DNS がリバース DNS ルックアップ(つまり、IP を指定してホスト名をルックアップすること) を許可せず、データノードがネームノードに登録しようとするたびに、デフォルトで HDFS がリバース 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/ 2. https://hadoop.apache.org/ docs/r2.6.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

于 2015-04-13T04:52:10.280 に答える
6

私には名前解決の問題のように見えます。考えられる理由:

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

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

また、hosts ファイルにマシンの IP+ホスト名がリストされていることを確認してください。

HTH

于 2013-06-22T17:17:36.187 に答える
0

この問題が発生しました。

core-site.xml の以前の設定はこのようなものです。

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

後で、ホスト名(PC 名)でローカルホスト名を変更しました。

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

それは私のために働いた。

于 2013-11-27T17:55:15.727 に答える
0

情報だけです。私は同じ問題を抱えており、スレーブのホスト名にタイプミスがあることを認識しました。逆に、ノード自体が間違ったホスト名を持つ可能性があります。

于 2014-02-03T10:15:31.757 に答える