当前位置: 代码迷 >> 综合 >> cm集群增加新datanode 无法通信,报错:Datanode denied communication with namenode because the host is not in the
  详细解决方案

cm集群增加新datanode 无法通信,报错:Datanode denied communication with namenode because the host is not in the

热度:67   发布时间:2023-09-29 01:30:48.0

问题描述:在CM上添加一台Dataode主机后,启动datanode时,一直报下面的错误:

“ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool BP-1251007601-10.162.3.171-1464682677169 (Datanode Uuid 88ab81cd-ddb8-4ca4-8652-b631937aacec) service to DSJ-RTB-4T-202/10.162.3.172:8022 Datanode denied communication with namenode because the host is not in the include-list: DatanodeRegistration(10.162.2.225, datanodeUuid=88ab8

1cd-ddb8-4ca4-8652-b631937aacec, infoPort=50075, infoSecurePort=0, ipcPort=50020, storageInfo=lv=-56;cid=cluster16;nsid=565627482;c=0)”

并且CM页面上“最新命令”显示active namenode与standby namenode“刷新节点列表”失败,报超时错误。

 

问题原因:造成此问题的原因大部分是由于主机IP方面有问题。报错上面提示的是与active namenode拒绝连接。

问题解决办法有

方法一:检查namenode节点的/etc/hosts配置,看是否有新添加的datanode信息(其实所有机器都应该添加这台IP)

方法二:CM - HDFS -> Namenode instance -> Actions => Refresh node list   //这个可能执行不成功,因为尝试从CM上刷新节点列表, 但是报timeout,所以CM和Namenode之间的通讯可能有些问题。

方法三:在namenode主机上进行手动刷新

hdfs dfsadmin  -fs hdfs://DSJ-RTB-4T-201:8020 –refreshNodes   //其中的DSJ-RTB-4T-201为standby namenode的IP,如果有报错active namenode,那就在active namenode上进行手动刷新。最终使用这个方法能成功刷新,并且添加的新datanode也能正常启动了。

 

关于使用方法三的过程:

由于报错上面提示的是与active namenode拒绝连接,所以手动在namenode节点上刷新主机列表:

hadoop dfsadmin -fs hdfs://10.162.3.172:8020 -refreshNodes   //其中10.162.3.172是active namenode的IP

此时在active namenode也是能看到新添加的机器的:

/opt/cm-5.5.4/run/cloudera-scm-agent/process/135920-hdfs-NAMENODE-refresh目录下去执行如下:

cat  dfs_hosts_allow.txt | grep 10.162.2.223 

cm集群增加新datanode 无法通信,报错:Datanode denied communication with namenode because the host is not in the

可以看出是有新加的节点的。

然后再次重启datanode,发现datanode还是报以前一样的错误,只不过里面报的是与standby namenode节点拒绝连接,这次还是手动在standby namenode上刷新主机列表:

hadoop dfsadmin -fs hdfs://10.162.3.171:8020 -refreshNodes   //其中10.162.3.171是active namenode的IP

最后重启datanode,发现终于不报错,也能正常使用了。

 

cloudera建议重启cm agent的命令顺序为:

/opt/cm-5.5.4/etc/init.d/cloudera-scm-agent next_stop_hard

/opt/cm-5.5.4/etc/init.d/cloudera-scm-agent stop

/opt/cm-5.5.4/etc/init.d/cloudera-scm-agent start

  相关解决方案