web-dev-qa-db-ja.com

hadoop-namenodeで接続が拒否されました

私は長い間ウェブとスタックオーバーフローを検索しましたが、それは役に立ちませんでした。

2ノードクラスターセットアップにhadoopyarn2.2.0をインストールしました。しかし、何かがうまくいかない。マスターノードでstart-dfs.shとstart-yarn.shを使用してhadoopデーモンを起動すると、マスターとスレーブで正常に実行されます(マスターのホスト名はRM、スレーブのホスト名はslvです)。彼らはお互いをうまくsshすることができます。しかし、ジョブを実行したい場合、次のエラーが表示されます。

14/01/02 04:22:53警告util.NativeCodeLoader:プラットフォームのネイティブhadoopライブラリを読み込めません...該当する場合は組み込みのJavaクラスを使用します14/01/02 04:22:56警告hdfs.DFSClient: DataStreamer Exception org.Apache.hadoop.ipc.RemoteException(Java.io.IOException):ファイル/ user/root/QuasiMonteCarlo_1388665371850_813553673/in/part0は、minReplication(= 1)ではなく0ノードにのみ複製できました。実行中のデータノードは0であり、この操作で除外されるノードはありません。 org.Apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget(BlockManager.Java:1384)at org.Apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.Java:2477)at org.Apache org.Apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.Java:387)の.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.Java:555) .proto.ClientNamenodeProtocolProtos $ ClientNamenodeProtocol $ 2.callBlockingMethod(ClientNamenodeProtocolProtos.Java:59582)at org.Apache.hadoop.ipc.ProtobufRpcEngine $ Server $ ProtoBufRpcInvoker.call(ProtobufRpcEngine.Java:585)at org。 Server.call(RPC.Java:928)at org.Apache.hadoop.ipc.Server $ Handler $ 1.run(Server.Java:2048)at org.Apache.hadoop.ipc.Server $ Handler $ 1.run(Server。 Java:2044)at Java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.Java:416)at o org.Apache.hadoop.ipc.Server $ Handler.run(Server.Java:2042)のrg.Apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.Java:1491)

at org.Apache.hadoop.ipc.Client.call(Client.Java:1347)
at org.Apache.hadoop.ipc.Client.call(Client.Java:1300)
at org.Apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.Java:206)
at com.Sun.proxy.$Proxy9.addBlock(Unknown Source)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:622)
at org.Apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.Java:186)
at org.Apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.Java:102)
at com.Sun.proxy.$Proxy9.addBlock(Unknown Source)
at org.Apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.addBlock(ClientNamenodeProtocolTranslatorPB.Java:330)
at org.Apache.hadoop.hdfs.DFSOutputStream$DataStreamer.locateFollowingBlock(DFSOutputStream.Java:1226)
at org.Apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.Java:1078)
at org.Apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.Java:514)

データノードログには、このログが存在します。

2014-01-02 04:40:31,616警告org.Apache.hadoop.hdfs.server.datanode.DataNode:サーバーへの接続の問題:RM/192.168.1.101:9000 2014-01-02 04:40:37,618 INFOorg。 Apache.hadoop.ipc.Client:サーバーへの接続を再試行しています:RM/192.168.1.101:9000。すでに0回試行されました$ 2014-01-02 04:40:38,619 INFO org.Apache.hadoop.ipc.Client:サーバーへの接続を再試行しています:RM/192.168.1.101:9000。すでに1回試行されました$ 2014-01-02 04:40:39,620 INFO org.Apache.hadoop.ipc.Client:サーバーへの接続を再試行しています:RM/192.168.1.101:9000。すでに2回試行されました$ 2014-01-02 04:40:40,621 INFO org.Apache.hadoop.ipc.Client:サーバーへの接続を再試行しています:RM/192.168.1.101:9000。すでに3回試しました

マスターノードの9000ポートを確認したところ、出力は次のようになりました。

tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 10227/Java

問題の原因は、スレーブノードで

telnet RM 9000

それは言う

192.168.1.101を試行しています... telnet:リモートホストに接続できません:接続が拒否されました

しかしながら

telnet RM

出力は次のとおりです。

192.168.1.101を試行しています... RMに接続しました。エスケープ文字は「^]」です。 Ubuntu 12.04.2 LTS RMログイン:

追加情報については、マスターとスレーブの/ etc/hostsは次のとおりです。

127.0.0.1 RM | slv localhost

192.168.1.101 RM

192.168.1.103 slv

誰かが私に解決策を提案できますか?どんな助けでも本当にありがたいです。ありがとう

9
masoumeh

問題は、マスターが127.0.0.1:9000でリッスンしているため、データノードが192.168.1.101:9000でリッスンしていないために接続できないことだと思います(理論的には、回避するため、リッスンするのに適した場所は0.0.0.0:9000です。この問題はありますが、この構成は受け入れられないようです)。

たぶん、最初の行を削除する/etc/hostsの変更を修正するか、最初に次のコマンドを試してみてください。

127.0.0.1 localhost
192.168.1.101 RM
192.168.1.103 slv

-編集:以下のコメントを読む

12

私は同じ問題を抱えていました、私は変更しました

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:8020</value>
</property>

core-site.xmlで

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://ip-address:8020</value>
</property>

そしてそれはうまくいった

1
gary69

同じ問題が発生しました。 jpsを実行すると、すべてのnamenodeとdatanodeが実行されていることがわかります。ただし、Webページにアクティブノードが表示されません。そして、私は127.0.0.1 master in /etc/hosts。それを削除した後。奴隷はtelnet master 9000

僕の /etc/hostsは次のようになります:

127.0.0.1   localhost

192.168.139.129 slave1

192.168.139.130 slave2

192.168.139.128 master
0
Levin