hadoop - Datanode 拒绝与 namenode 通信,因为无法解析主机名

标签 hadoop docker kubernetes

我在 kubernetes 中运行了一个 hadoop 集群,有 4 个日志节点和 2 个名称节点。有时,我的数据节点无法注册到名称节点。

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 拒绝与 namenode 通信,因为无法解析主机名 (ip=10.100.9.45, hostname=10.100.9.45)

但是,我可以在数据节点和名称节点。

数据节点中的

/etc/hosts:

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
名称节点中的

/etc/hosts:

# 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

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

我猜问题可能与dns有关。而在其他类似的问题中,hadoop没有部署在kubernetes或docker容器中,所以我发布了这个。请不要将其标记为重复...

最佳答案

在我的情况下,我还为名称节点和数据节点添加了三个配置:

  • dfs.namenode.datanode.registration.ip-hostname-check: false
  • dfs.client.use.datanode.hostname: false(默认)
  • dfs.datanode.use.datanode.hostname: false(默认)

关于hadoop - Datanode 拒绝与 namenode 通信,因为无法解析主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44429976/

相关文章:

python - 从 docker 运行 python web 应用程序

jenkins - docker为什么无法使用自定义配置提交Jenkins容器?

ubuntu - Docker.io init.d 脚本在启动容器上不起作用

azure - Argo 工作流程中的卷节点关联性冲突

hadoop - s3 上的 Spark 数据集 Parquet 分区创建临时文件夹

hadoop - 从 Hadoop 集群中运行 web-fetch

hadoop - Hive中Group By对分区列的性能

hadoop - 如何在HDFS上使用Hive?

docker - 如何在minikube节点上的kubernetes pod中设置sysctl key ?

kubernetes - CloudFoundry 是否支持每个应用程序使用多个容器?