hadoop-namenode上的连接被拒绝

brc7rcf0  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(1016)

我已经搜索web和stackoverflow很长时间了,但是没有用。
我已经在2节点集群设置中安装了hadoopyarn 2.2.0。但是出了点问题。当我在master节点上使用start-dfs.sh和start-yarn.sh启动hadoop守护进程时,它们成功地在master和slave中运行(我的master的主机名是rm,slave的主机名是slv)。它们可以成功地相互ssh。但当我要运行作业时,会出现以下错误:
14/01/02 04:22:53 warn util.nativecodeloader:无法为您的平台加载本机hadoop库。。。在适用的情况下使用内置java类14/01/02 04:22:56 warn hdfs.dfsclient:datastreamer exception org.apache.hadoop.ipc.remoteexception(java.io.ioexception):file/user/root/quasimontecarlo\u 1388665371850\u 813553673/in/part0只能复制到0节点,而不是minreplication(=1)。有0个datanode正在运行,此操作中没有排除任何节点。在org.apache.hadoop.hdfs.server.blockmanagement.blockmanager.choosetarget(blockmanager。java:1384)位于org.apache.hadoop.hdfs.server.namenode.fsnamesystem.getadditionalblock(fsnamesystem)。java:2477)在org.apache.hadoop.hdfs.server.namenode.namenoderpcserver.addblock(namenoderpcserver。java:555)在org.apache.hadoop.hdfs.protocolpb.clientnamenodeprotocolserversidetranslatorpb.addblock(clientnamenodeprotocolserversidetranslatorpb。java:387)在org.apache.hadoop.hdfs.protocol.proto.clientnamenodeprotocolprotos$clientnamenodeprotocol$2.callblockingmethod(clientnamenodeprotocolprotos。java:59582)在org.apache.hadoop.ipc.protobufrpceengine$server$protobufrpinvoker.call(protobufrpceengine。java:585)在org.apache.hadoop.ipc.rpc$server.call(rpc。java:928)在org.apache.hadoop.ipc.server$handler$1.run(server。java:2048)在org.apache.hadoop.ipc.server$handler$1.run(server。java:2044)位于java.security.accesscontroller.doprivileged(本机方法)javax.security.auth.subject.doas(主题。java:416)在org.apache.hadoop.security.usergroupinformation.doas(usergroupinformation。java:1491)在org.apache.hadoop.ipc.server$handler.run(server。java:2042)

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)

在datanode日志中,此日志存在:
2014-01-02 04:40:31616警告org.apache.hadoop.hdfs.server.datanode.datanode:连接到服务器时出现问题:rm/192.168.1.101:9000 2014-01-02 04:40:37618 info org.apache.hadoop.ipc.client:重试连接到服务器:rm/192.168.1.101:9000。已尝试0次$2014-01-02 04:40:38619 info org.apache.hadoop.ipc.client:重试连接到服务器:rm/192.168.1.101:9000。已尝试1次$2014-01-02 04:40:39620 info org.apache.hadoop.ipc.client:重试连接到服务器:rm/192.168.1.101:9000。已尝试2次$2014-01-02 04:40:40621 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:*侦听10227/java
我猜这个问题是由于在从属节点中
电信9000室
上面写着
正在尝试192.168.1.101。。。telnet:无法连接到远程主机:连接被拒绝
然而
远程登录rm
输出为:
正在尝试192.168.1.101。。。已连接到rm。转义字符为“^]”。ubuntu 12.04.2 lts rm登录:
有关其他信息,我的/etc/hosts上的master和slave如下:
127.0.0.1 rm | slv本地主机
192.168.1.101马来西亚令吉
192.168.1.103安全阀
有人能给我一个解决办法吗?非常感谢您的帮助。谢谢

x8diyxa7

x8diyxa71#

我想问题是你的主人在听 127.0.0.1:9000 ,因此datanode无法连接,因为它不在侦听 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

--编辑:阅读下面的评论

rbl8hiat

rbl8hiat2#

我也遇到了同样的问题。在运行jps之后,我们可以看到所有namenode和datanode都在运行。但在网页中看不到活动节点。我发现我把 127.0.0.1 master/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
kmb7vmvb

kmb7vmvb3#

我也有同样的问题,我变了

<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>

而且成功了

相关问题