一、前言
由于面试时被问到过这个问题,那么今天就从源码角度分析下是如何存储的?
二、数据在DataNode上是以什么样的形式存储的?
首先,我们可以通过在hdfs-site.xml中配置dfs.datanode.data.dir,来规定在哪些datanode服务器的哪些目录下存储数据
在我的服务器上,数据存储在/opt/module/hadoop-3.1.3/data目录下
Datanode保存的是文件划分的block块,以及这些block块的元数据
Datanode也可以定义多个目录保存数据块
数据保存在/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-454224392-192.168.10.105-1647526514487/current/目录下
- BP-454224392-192.168.10.105-1647526514487:这个目录是一个块池目录,块池目录保存了一个块池在当前存储目录下存储的所有数据块, 在Federation部署方式中, Datanode的一个存储目录会包含多个以“BP”开头的块池目录。 BP后面会紧跟一个唯一的随机块池ID, 在这个示例中就是451827885。 接下来的IP地址192.168.8.156是当前块池对应的Namenode的IP地址。 最后一个部分是这个块池的
创建时间。
- VERSION文件:和Namenode以及JournalNode的VERSION文件类似, 块池目录