DataNode 无法与 NameNode 通信
DataNodes can't talk to NameNode
设置 3 个节点的 Hadoop 集群。其中一个同时具有 NameNode 和 DataNode 角色,而另外两个只是 DataNode。
我启动了所有节点和服务,但总的来说,它显示只有一个 DataNode 的状态是活动的。其他节点的状态甚至都没有显示。
我的问题是开始和上线有什么区别?为什么其他节点根本没有状态?
我想问题是数据节点无法与名称节点通信。正如 指出的那样,我检查了 /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的日志:
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.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.run(Server.java:2039)
at org.apache.hadoop.ipc.Server$Handler.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)
这很奇怪,没有 IP 地址为 192.1.4.1 的主机。为什么数据节点会尝试连接 192.1.4.1?
Unresolved datanode registration: hostname cannot be resolved (ip=192.1.4.1, hostname=192.1.4.1)
"Datanodes 3/3 started"表示3个数据节点进程运行
Datanodes 状态“1 live / 0 Dead / 0 Decommissioning”表示您的名称节点能够与一个节点通信。
这似乎是网络问题(确保 HDFS ports 在您的防火墙上打开)。活动的 Datanode 可能与您的 Namenode 在同一台机器上。
将 NameNode 移动到与 DataNode 相同的网络解决了这个问题。
DataNodes 在 192.1.5.* 网络中。
NameNode 在 192.1.4.* 网络中。
将 NameNode 移动到 192.1.5 后。* 对我的情况有效。
设置 3 个节点的 Hadoop 集群。其中一个同时具有 NameNode 和 DataNode 角色,而另外两个只是 DataNode。
我启动了所有节点和服务,但总的来说,它显示只有一个 DataNode 的状态是活动的。其他节点的状态甚至都没有显示。
我的问题是开始和上线有什么区别?为什么其他节点根本没有状态?
我想问题是数据节点无法与名称节点通信。正如
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的日志:
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.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.run(Server.java:2039)
at org.apache.hadoop.ipc.Server$Handler.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)
这很奇怪,没有 IP 地址为 192.1.4.1 的主机。为什么数据节点会尝试连接 192.1.4.1?
Unresolved datanode registration: hostname cannot be resolved (ip=192.1.4.1, hostname=192.1.4.1)
"Datanodes 3/3 started"表示3个数据节点进程运行
Datanodes 状态“1 live / 0 Dead / 0 Decommissioning”表示您的名称节点能够与一个节点通信。
这似乎是网络问题(确保 HDFS ports 在您的防火墙上打开)。活动的 Datanode 可能与您的 Namenode 在同一台机器上。
将 NameNode 移动到与 DataNode 相同的网络解决了这个问题。
DataNodes 在 192.1.5.* 网络中。
NameNode 在 192.1.4.* 网络中。
将 NameNode 移动到 192.1.5 后。* 对我的情况有效。