Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 数据节点可以';不要和NameNode说话_Hadoop_Bigdata_Hortonworks Data Platform_Ambari - Fatal编程技术网

Hadoop 数据节点可以';不要和NameNode说话

Hadoop 数据节点可以';不要和NameNode说话,hadoop,bigdata,hortonworks-data-platform,ambari,Hadoop,Bigdata,Hortonworks Data Platform,Ambari,设置一个包含3个节点的Hadoop集群。其中一个同时拥有NameNode和DataNode角色,而另外两个只是DataNode 我启动了所有节点和服务,但总而言之,它只显示了DataNodes的一个状态为live。甚至没有显示其他节点的状态 我的问题是,开始和活着有什么区别?为什么其他节点根本没有状态 我想问题是datanodes无法与namenode对话。如前所述,我检查了/etc/hosts文件。就是这样, 127.0.0.1 nnode.domain nnode localhost4

设置一个包含3个节点的Hadoop集群。其中一个同时拥有NameNode和DataNode角色,而另外两个只是DataNode

我启动了所有节点和服务,但总而言之,它只显示了DataNodes的一个状态为live。甚至没有显示其他节点的状态

我的问题是,开始和活着有什么区别?为什么其他节点根本没有状态

我想问题是datanodes无法与namenode对话。如前所述,我检查了/etc/hosts文件。就是这样,

127.0.0.1   nnode.domain nnode localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.1.4.212 nnode.domain nnode
192.1.5.124 dnode02.domain dnode02
192.1.5.125 dnode01.domain dnode01
我将第一行更改为:

127.0.0.1 localhost.localdomain localhost localhost4 localhost4.localdomain4

现在我可以与nnode.domain:50070建立连接,但是datanode端的错误发生了变化。这里是来自datanode的日志:

2015-05-15 10:08:21,721 ERROR datanode.DataNode (DataXceiver.java:run(253)) - dnode01.domain:50010:DataXceiver error processing unknown operation  src: /127.0.0.1:49000 dst: /127.0.0.1:50010
java.io.EOFException
        at java.io.DataInputStream.readShort(DataInputStream.java:315)
        at org.apache.hadoop.hdfs.protocol.datatransfer.Receiver.readOp(Receiver.java:58)
        at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:212)
        at java.lang.Thread.run(Thread.java:745)
2015-05-15 10:08:23,670 INFO  datanode.DataNode (BPServiceActor.java:register(782)) - Block pool BP-2116866246-127.0.0.1-1431441630609 (Datanode Uuid null) service to nnode.domain/192.1.4.212:8020 beginning handshake with NN
2015-05-15 10:08:23,674 ERROR datanode.DataNode (BPServiceActor.java:run(840)) - Initialization failed for Block pool BP-2116866246-127.0.0.1-1431441630609 (Datanode Uuid null) service to nnode.domain/192.1.4.212:8020 Datanode denied communication with namenode because hostname cannot be resolved (ip=192.1.4.1, hostname=192.1.4.1): DatanodeRegistration(0.0.0.0, datanodeUuid=7f1be518-1255-4a6a-b31c-22be5dc47673, infoPort=50075, ipcPort=8010, storageInfo=lv=-56;cid=CID-51d1dfd0-9376-44a7-b581-c14eec95fd74;nsid=450599258;c=0)
       at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.registerDatanode(DatanodeManager.java:887)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:5282)
        at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.registerDatanode(NameNodeRpcServer.java:1082)
        at org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolServerSideTranslatorPB.registerDatanode(DatanodeProtocolServerSideTranslatorPB.java:92)
        at org.apache.hadoop.hdfs.protocol.proto.DatanodeProtocolProtos$DatanodeProtocolService$2.callBlockingMethod(DatanodeProtocolProtos.java:26378)
        at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:619)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:962)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2039)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2035)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2033)
这很奇怪,没有192.1.4.1 IP地址的主机。为什么datanodes会尝试连接192.1.4.1

Unresolved datanode registration: hostname cannot be resolved (ip=192.1.4.1, hostname=192.1.4.1)
“Datanodes 3/3已启动”表示3个Datanodes进程正在运行

Datanodes状态“1活动/0死亡/0停用”表示您的namenode能够与一个节点通信


这似乎是网络问题(请确保您的防火墙已打开)。活动的Datanode可能与您的Namenode位于同一台计算机上。

将Namenode与DataNodes移动到同一网络解决了此问题

DataNodes位于192.1.5.*网络中

NameNode位于192.1.4.*网络中


在将NameNode移动到192.1.5.*之后,我的案例成功了。

实际上,我已经关闭了所有节点上的iptables。所以节点之间没有防火墙。你能发布datanodes和namenode的日志吗?在namenode屏幕上,是否看到所有datanodes?(namenode端口50070上的web界面)此日志来自以下数据节点之一:
2015-05-14 17:20:52273 INFO ipc.Client(Client.java:handleConnectionFailure(859))-重试连接到服务器:nnode.domain/192.1.4.212:8020。已试过25次;重试策略是RetryUpToMaximumCountWithFixedSleep(maxRetries=50,sleepTime=1000毫秒)
我无法与端口50070上的namenode建立连接。看起来同样的事情也适用于端口8020。我想知道是什么原因造成的。您使用/etc/hosts文件吗?此文件中的条目是否正确?