首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由于无法解析主机名,Datanode拒绝与namenode通信

由于无法解析主机名,Datanode拒绝与namenode通信
EN

Stack Overflow用户
提问于 2017-06-08 08:00:42
回答 2查看 3K关注 0票数 4

我在kubernetes中运行了hadoop集群,包含4个日志节点和2个namenodes。有时,我的数据不能注册到namenodes。

代码语言:javascript
运行
复制
17/06/08 07:45:32 INFO datanode.DataNode: Block pool BP-541956668-10.100.81.42-1496827795971 (Datanode Uuid null) service to hadoop-namenode-0.myhadoopcluster/10.100.81.42:8020 beginning handshake with NN
17/06/08 07:45:32 ERROR datanode.DataNode: Initialization failed for Block pool BP-541956668-10.100.81.42-1496827795971 (Datanode Uuid null) service to hadoop-namenode-0.myhadoopcluster/10.100.81.42:8020 Datanode denied communication with namenode because hostname cannot be resolved (ip=10.100.9.45, hostname=10.100.9.45): DatanodeRegistration(0.0.0.0:50010, datanodeUuid=b1babba6-9a6f-40dc-933b-08885cbd358e, infoPort=50075, infoSecurePort=0, ipcPort=50020, storageInfo=lv=-56;cid=CID-bceaa23f-ba3d-4749-a542-74cda1e82e07;nsid=177502984;c=0)
    at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.registerDatanode(DatanodeManager.java:863)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:4529)
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.registerDatanode(NameNodeRpcServer.java:1279)
    at org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolServerSideTranslatorPB.registerDatanode(DatanodeProtocolServerSideTranslatorPB.java:95)
    at org.apache.hadoop.hdfs.protocol.proto.DatanodeProtocolProtos$DatanodeProtocolService$2.callBlockingMethod(DatanodeProtocolProtos.java:28539)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:969)
    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:1657)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2043)

上面写着:

hadoop-namenode-0.myhadoopcluster/10.100.81.42:8020 Datanode denied communication with namenode because hostname cannot be resolved (ip=10.100.9.45, hostname=10.100.9.45)

但是,我可以在datanode和namenode中平hadoop-namenode-0.myhadoopcluster10.100.81.4210.100.9.45

数据节点中的/etc/hosts

代码语言:javascript
运行
复制
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters
10.100.9.45 hadoop-datanode-0.myhadoopcluster.default.svc.cluster.local hadoop-datanode-0

namenode中的/etc/hosts

代码语言:javascript
运行
复制
# Kubernetes-managed hosts file.
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters
10.100.81.42 hadoop-namenode-0.myhadoopcluster.default.svc.cluster.local hadoop-namenode-0

我已经将dfs.namenode.datanode.registration.ip-hostname-check设置为false in hdfs-site.xml

我想这个问题可能与dns有关。在其他类似的问题中,hadoop没有部署在kubernetes或docker容器中,所以我发布了这个。请不要给它贴上复制的标签。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-04 04:18:24

我希望你现在已经找到了解决这个问题的办法。上周我遇到了类似的问题,但是我的集群是在不同的环境中设置的,但是问题的上下文是相同的。

本质上,如果集群正在使用DNS Resolver,那么需要在DNS服务器级别设置反向DNS查找,以解决这个问题,或者如果名称节点正在查看/etc/host文件以查找数据节点,那么那里的数据节点需要有任何条目。

我在Hortonworks社区论坛上更新了一个老问题,链接如下:https://community.hortonworks.com/questions/24320/datanode-denied-communication-with-namenode.html?childToView=135321#answer-135321

票数 0
EN

Stack Overflow用户

发布于 2017-09-04 15:45:43

在我的情况下,我还包括了namenode和datanode的三个配置:

  • dfs.namenode.datanode.registration.ip-hostname-check: false
  • dfs.client.use.datanode.hostname: false (默认)
  • dfs.datanode.use.datanode.hostname: false (默认)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44429976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档