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命令。以上操作是在首次搭建集群且没有重要数据的情况下执行的。

你可能感兴趣的:(Hadoop HA集群两个NameNode都是standby)