错误信息展示:
错误原因:……because hostname cannot be resolved ……
DataNode的log日志错误信息:
2018-09-10 21:30:35,761 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Block pool BP-235382543-192.168.1.110-1536584792103 (Datanode Uuid null) service to master/192.168.1.110:9000 beginning handshake with NN
2018-09-10 21:30:35,763 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool BP-235382543-192.168.1.110-1536584792103 (Datanode Uuid null) service to master/192.168.1.110:9000 Datanode denied communication with namenode because hostname cannot be resolved (ip=192.168.1.82, hostname=192.168.1.82): DatanodeRegistration(0.0.0.0:50010, datanodeUuid=e3d2b611-7856-45bf-856d-ab1f6b25ab62, infoPort=50075, infoSecurePort=0, ipcPort=50020, storageInfo=lv=-56;cid=CID-4d0bc1a7-bbad-4270-adc4-64e3cdbda438;nsid=714580893;c=0)
at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.registerDatanode(DatanodeManager.java:873)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:4529)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.registerDatanode(NameNodeRpcServer.java:1286)
at org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolServerSideTranslatorPB.registerDatanode(DatanodeProtocolServerSideTranslatorPB.java:96)
at org.apache.hadoop.hdfs.protocol.proto.DatanodeProtocolProtos$DatanodeProtocolService$2.callBlockingMethod(DatanodeProtocolProtos.java:28752)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:982)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2049)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2045)
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:1698)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2043)
申明:Namenode和Datanode的clusterID相同;
Namenode和Datanode的配置文件/etc/hosts配置:
master的slaves 配置也正确;Java和Hadoop环境变量没问题!
Namenode和Datanode相互能够ping通:
请大神指教,谢谢!!!
经过两多次的搜索,现已解决此问题:
解决方法:在hdfs-site.xml中添加以下属性:
<property>
<name>dfs.namenode.datanode.registration.ip-hostname-check</name>
<value>false</value>
</property>