hadoop文件系统的目录结构及datanode不能启动

在做hadoop测试的时候,由于误操作,datanode不能启动了。查询日志也没有错误提示。我们先来看看hadoop文件的元文件目录结构


├── data 
│?? ├── current 
│?? │?? ├── BP-1808523652-192.168.237.128-1451363010425 
│?? │?? │?? ├── current 
│?? │?? │?? │?? ├── finalized 
│?? │?? │?? │?? ├── rbw 
│?? │?? │?? │?? └── VERSION 
│?? │?? │?? ├── dncp_block_verification.log.curr 
│?? │?? │?? └── tmp 
│?? │?? └── VERSION 
│?? └── in_use.lock 
└── name 
├── current 
│?? ├── edits_inprogress_0000000000000000001 
│?? ├── fsimage_0000000000000000000 
│?? ├── fsimage_0000000000000000000.md5 
│?? ├── seen_txid 
│?? └── VERSION 
└── in_use.lock

在data 和 name目录下有两个VERSION文件。 
data 下的version如下


storageID=DS-33e892d0-db6c-4185-a1c2-8242a87d1f95
clusterID=CID-2c7feceb-154a-4615-be40-d6f846e421b5
cTime=0
datanodeUuid=e46b9c41-f292-47b2-b8af-ea2f00b12838
storageType=DATA_NODE
layoutVersion=-55

name下的VERSION

namespaceID=1149062121
clusterID=CID-2c7feceb-154a-4615-be40-d6f846e421b5
cTime=0
storageType=NAME_NODE
blockpoolID=BP-1808523652-192.168.237.128-1451363010425
layoutVersion=-57

两个文件中的clusterID的值应该一样。修改为一样就可以了。

多次格式化namenode的问题原因解释?

    答:hdfs格式化会改变命名空间id,当首次格式化的时候datanode和namenode会产生一个相同的namespaceID,然后读取数据就可以,如果你重新执行格式化的时候,namenode的namespaceID改变了,但是datanode的namespaceID没有改变,两边就不一致了,如果重新启动或进行读写hadoop就会挂掉。

    解决方案:hdfs  namenode -format -force   进行强制的格式化会同时格式化namenode和datanode 



补充:

NameNode 的元数据存储目录结构: 
这里写图片描述

current目录为当前集群正在使用的目录,previous目录是版本升级之前的目录。版本进行回滚的时候,previous目录就会发挥作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值