Hadoop HA集群两个NameNode都是standby

一、背景

今天给客户的阿里云平台搭建Hadoop HA集群时,出现以下情况:

  1. 通过hdfs haadmin -getServiceState nn1hdfs haadmin -getServiceState nn2命令查看,发现两个NameNode的状态都是standby
  2. 通过hdfs dfsadmin -report命令查看,发现HDFS数据均为0
  3. 查看日志发现:org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /home/input/file1.txt._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1). There are 2 datanode(s) running and no node(s) are excluded in this operation.

二、错误原因

       当首次执行命令hadoop namenode -format格式化NameNode时,会在dfs.namenode.name.dir对应路径下生成current/VERSION文件,其中记录了clusterID,同时dfs.datanode.data.dir对应的DataNode目录中也会生成current/VERSION文件,其中clustreID的与NameNode中clusterID的值相同。
       当再次执行hadoop namenode -format命令时,NameNode对应的目录下会重新生成clusterID,导致和DataNode对应的clusterID不一致,从而造成上述问题。

三、解决方案

方案一:

  1. 关掉集群

./stop-dfs.sh

  1. 删掉各个节点上DataNode对应的目录

rm -rf data

  1. 格式化NameNode

hadoop namenode -format

  1. 重启集群

./start-dfs.sh

方案二:

  1. 关掉集群

./stop-dfs.sh

  1. 编辑clusterID使Namenode和DataNode同步

vim clusterID

  1. 重启集群

./start-dfs.sh

注意:

在生产环境中,谨慎使用hadoop namenode -format命令。以上操作是在首次搭建集群且没有重要数据的情况下执行的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。