DataNode的目录结构

和namenode不同的是,datanode的存储目录是初始阶段自动创建的,不需要额外格式化。

1、在/opt/module/hadoop-2.7.2/data/tmp/dfs/data/current这个目录下查看版本号

	[atguigu@hadoop102 current]$ cat VERSION 
	storageID=DS-1b998a1d-71a3-43d5-82dc-c0ff3294921b
	clusterID=CID-1f2bf8d1-5ad2-4202-af1c-6713ab381175
	cTime=0
	datanodeUuid=970b2daf-63b8-4e17-a514-d81741392165
	storageType=DATA_NODE
	layoutVersion=-56

具体解释:

	(1)storageID:存储id号
	
	(2)clusterID集群id,全局唯一
	
	(3)cTime属性标记了datanode存储系统的创建时间,对于刚刚格式化的存储系统,这个属性为0;
	     但是在文件系统升级之后,该值会更新到新的时间戳。
	     
	(4)datanodeUuid:datanode的唯一识别码
	
	(5)storageType:存储类型
	
	(6)layoutVersion是一个负整数。通常只有HDFS增加新特性时才会更新这个版本号。

2、在/opt/module/hadoop-2.7.2/data/tmp/dfs/data/current/BP-97847618-192.168.10.102-1493726072779/current这个目录下查看该数据块的版本号

[atguigu@hadoop102 current]$ cat VERSION 
#Mon May 08 16:30:19 CST 2017
namespaceID=1933630176
cTime=0
blockpoolID=BP-97847618-192.168.10.102-1493726072779
layoutVersion=-56

具体解释:

(1)namespaceID:是datanode首次访问namenode的时候从namenode处获取的storageID对每个datanode来说是唯一的(但对于单个datanode中所有存储目录来说则是相同的),namenode可用这个属性来区分不同datanode。

(2)cTime属性标记了datanode存储系统的创建时间,对于刚刚格式化的存储系统,这个属性为0;但是在文件系统升级之后,该值会更新到新的时间戳。

(3)blockpoolID:一个block pool id标识一个block pool,并且是跨集群的全局唯一。
                              当一个新的Namespace被创建的时候(format过程的一部分)会创建并持久化一个唯一ID。
                              在创建过程构建全局唯一的BlockPoolID比人为的配置更可靠一些。
                              NN将BlockPoolID持久化到磁盘中,在后续的启动过程中,会再次load并使用。

(4)layoutVersion是一个负整数。通常只有HDFS增加新特性时才会更新这个版本号。

3、Datanode多目录配置

1)datanode也可以配置成多个目录,每个目录存储的数据不一样。即:数据不是副本。
2)hdfs-site.xml具体配置如下:

<property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///${hadoop.tmp.dir}/dfs/data1,file:///${hadoop.tmp.dir}/dfs/data2</value>
</property>