因为多次namenode格式化导致hdfs只有Namenode启动

今天启动hdfs时hdfs namenode -format了一下,导致再次启动时datanode都没动静,查看日志如下:

2018-08-30 10:22:59,831 WARN org.apache.hadoop.hdfs.server.common.Storage: java.io.IOException: Incompatible clusterIDs in /home/hadoop/hadoop/tmp/dfs/data: namenode clusterID = CID-7d9e3b94-040f-4021-8f37-394e3446574a; datanode clusterID = CID-ea1d2d26-d301-48a1-92cb-ca21e9b30a20
2018-08-30 10:22:59,832 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to hadoop1/192.168.25.100:9000. Exiting. 
java.io.IOException: All specified directories are failed to load.
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:478)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1338)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1304)
        at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:314)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:226)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:867)
        at java.lang.Thread.run(Thread.java:748)

从日志可以发现启动失败是由于namenode和datanode的clusterID不一致造成

namenode clusterID = CID-7d9e3b94-040f-4021-8f37-394e3446574a
datanode clusterID = CID-ea1d2d26-d301-48a1-92cb-ca21e9b30a20

解决方法:
实质就是将datanode中VERSION的clusterID和namenode的统一,这里我直接将datanode下${hadoop.tmp.dir}/dfs/data下的文件夹和数据全都删除,使得启动hdfs时重新生成datanode信息,然后在namenode上重新-format,最后start-hdfs.sh。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "hdfs namenode -format" 命令用于格式化 HDFS 集群的 Namenode。这意味着它将删除所有现有的文件系统数据并创建一个全新的文件系统。在格式化 Namenode 之前,请务必做好数据备份,因为格式化操作不可逆。 ### 回答2: hdfs namenode -format是Hadoop分布式文件系统中一条格式化命令,它的主要作用是清空Hadoop文件系统中的元数据信息,包括命名空间、数据块位置和数据存储状态等内容。在执行该命令之前,需要先停止HDFS服务并确保所有节点都已关闭,否则会导致数据丢失和元数据损坏。 执行hdfs namenode -format命令后,会生成一个新的namespace ID,并重置文件系统的版本号和检查点信息,这样可以重新初始化整个HDFS系统。此时,用户需要重新启动HDFS服务,并重新上传数据,创建目录和文件,以便进行新一轮的数据处理和计算。 需要注意的是,hdfs namenode -format命令具有破坏性,即可以清空所有数据和元数据信息,包括有用的数据和无用的数据,因此需要谨慎使用。在实际应用中,一般只有在重新部署或重构Hadoop集群时才会使用该命令,以确保HDFS的干净和一致性。 除此之外,还可以通过Hadoop的命令行界面和图形化界面来管理和维护HDFS集群,包括上传、下载、删除、复制和移动数据等常用操作,以及调整文件系统的配置参数,以达到更高效和稳定的数据处理和存储。 ### 回答3: hdfs namenode -format 是一个命令,用于格式化Hadoop分布式文件系统(HDFS)的NameNode节点。该命令可以在重装Hadoop集群,或更改旧集群中的节点配置时使用。 HDFSNameNode节点是Hadoop集群的关键组件之一,它维护着整个HDFS的文件系统命名空间和数据块信息。当一个新的Hadoop集群或者新的节点加入到一个集群时,需要使用hdfs namenode -format命令来初始化NameNode节点,以确保该节点集成到集群中,并正确保存分布式文件系统上的数据。在Hadoop早期版本中,这个命令是一个必要的步骤,在其后续版本中,节点启动时也会自动检查NameNode的状态。 在使用hdfs namenode -format命令时,需要注意以下几个问题: 1.格式化操作将删除HDFS上的所有数据。因此,在运行该命令之前,需要提前备份所有数据,以免导致数据丢失。 2.当使用管道或其他shell操作符时,在运行hdfs namenode -format时需要使用单引号。 3.运行格式化命令时,需要确保所有节点都已经启动,并且所有节点都可以相互通信。 4. 在Hadoop高可用性环境下,如果集群已经启用了HA,那么不需要使用hdfs namenode -format命令,否则会导致HA失败。 总的来说,hdfs namenode -format命令是一个非常关键的Hadoop集群维护操作,需要谨慎使用,以免误操作导致数据丢失或者其他故障。在执行该命令前,务必备份数据,确认配置和网络环境正确,保证平稳操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值