Datanode denied communication with namenode because the host is not in the include-list

本文主要描述了在Hadoop环境中,尝试新增一个DataNode节点时遇到的问题——DataNode拒绝与NameNode通信,原因是主机不在include-list中。详细分析了日志信息,并提供了通过执行`hdfs dfsadmin -refreshNodes`命令来刷新节点以解决此问题的方案。
摘要由CSDN通过智能技术生成

一、Hadoop新加一个数据节点DataNode
hdfs --daemon start datanode 启动数据节点后NameNode发现没有新的数据节点注册
二、查看新数据节点日志内容如下:
Datanode denied communication with namenode because the host is not in the include-list: DatanodeRegistration(192.168.1.105:9866, datanodeUuid=3f23a134-4134-4261-835f-4c8a4408cf49, infoPort=9864, infoSecurePort=0, ipcPort=9867, storageInfo=lv=-57;cid=CID-dfef9781-3b34-4481-98c1-eea5c3fdc2b9;nsid=589793973;c=1610780685599)
at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.registerDatanode(DatanodeManager.java:1037)
at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.registerDatanode(BlockManager.java:2438)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:3855)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.registerDatanode(NameNodeRpcServer.java:1521)
at org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolServerSideTranslatorPB.registerDatanode(DatanodeProtocolServerSideTranslatorPB.java:101)
at org.apache.hadoop.hdfs.protocol.proto.DatanodeProtocolProtos$DatanodeProtocolService 2. c a l l B l o c k i n g M e t h o d ( D a t a n o d e P r o t o c o l P r o t o s . j a v a : 31658 ) a t o r g . a p a c h e . h a d o o p . i p c . P r o t o b u f R p c E n g i n e 2.callBlockingMethod(DatanodeProtocolProtos.java:31658) at org.apache.hadoop.ipc.ProtobufRpcEngine

### 回答1: 这个问题是指 Hadoop 的 NameNode 未被格式化。要解决这个问题,需要执行以下步骤: 1. 关闭 Hadoop 集群中所有节点的服务。 2. 在 NameNode 所在节点上运行以下命令来格式化 NameNodehadoop namenode -format 3. 启动 Hadoop 集群中的所有服务。 执行完这些步骤后,您应该能够成功启动 Hadoop 集群。 ### 回答2: 当我们启动Hadoop的时候,如果出现"namenode is not formatted"的错误信息,意味着NameNode的元数据目录没有被正确格式化。 要解决这个问题,可以按照下面的步骤进行操作: 1. 停止所有的Hadoop服务,包括NameNodeDataNode和ResourceManager等。 2. 在主节点的Hadoop文件系统中找到NameNode的元数据目录,通常是在core-site.xml文件中配置的"dfs.namenode.name.dir"属性的指定路径下。可以使用命令`grep "dfs.namenode.name.dir" core-site.xml`来查找该路径。 3. 进入NameNode元数据目录,并删除其中的所有文件和子目录。可以使用命令`rm -Rf <metadata_dir>/*`来删除所有文件和子目录。 4. 重新格式化NameNode元数据目录。可以使用命令`hdfs namenode -format`来重新格式化。 5. 启动Hadoop服务。可以使用命令`start-all.sh`来启动所有的Hadoop服务。 在完成以上步骤后,再次启动Hadoop,"namenode is not formatted"的错误信息应该不再出现。同时,注意确保配置文件的正确性和一致性,以及确保所有的Hadoop服务正常运行。 ### 回答3: "namenode is not formatted"表示NameNode未进行格式化。在Hadoop中,NameNode负责存储并管理整个文件系统的元数据信息。当遇到“namenode is not formatted”错误时,可以通过以下步骤解决: 1. 停止Hadoop集群:停止所有节点上的Hadoop服务(包括NameNodeDataNode)。 2. 删除Hadoop文件系统元数据:在NameNode节点上找到Hadoop文件系统的数据存储位置(可在hdfs-site.xml文件中找到),通常是hadoop.tmp.dir指定的目录。删除此目录下的所有数据,包括所有子目录和文件。 3. 格式化NameNode:在NameNode节点上运行以下命令进行格式化: ```shell hdfs namenode -format ``` 4. 启动Hadoop集群:启动所有节点上的Hadoop服务。在NameNode节点上执行以下命令: ```shell start-dfs.sh ``` 确保NameNodeDataNode都已成功启动。 5. 验证解决方案:使用以下命令检查Hadoop集群状态: ```shell hdfs dfsadmin -report ``` 如果状态报告正常显示,即表示问题已解决。 需要注意的是,执行这些步骤将删除Hadoop集群中存储的所有数据,包括HDFS中的文件。因此,在执行此操作之前,请确保备份了重要的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值