【前言】
在HDFS中,NameNode存储了整个集群的元数据信息,DataNode(下面都简称dn)负责实际数据的存储,这些数据最终持久化到磁盘中。
那么这些持久化的文件都包括哪些?分别都有什么用?某个dn节点坏了,是否直接将对应的磁盘移到另一台节点上就可以正常使用并且不会出现数据丢失呢?
带着这些问题,作者对dn持久化的文件进行了总结。
【DN的持久化文件】
dn中可以配置多个目录(通常是多块磁盘,每个磁盘挂载到一个目录,这样可以提高整体的IO性能)进行数据的存储,多个目录共同存储该dn上的block信息。
每个目录的目录树结构如下图所示:
下面针对每一项进行具体说明:
in_use.lock该文件的文件内容为:
代码语言:javascript复制$DNPID@$DNIP其中$DNPID为dn的进程PID$DNIP为dn所在主机的IP文件内容(本质上是jvm的名称)是在dn启动时覆盖写入,并且会对该文件进行加锁,如果加锁失败会抛出异常并直接退出。
这样做的目录是为了防止多个dn线程并发修改这个目录。
VERSION(current目录下)定义了整个存储文件系统的布局,主要用于升级,具体文件内容为:
代码语言:javascript复制#Fri Sep 04 11:19:36 CST 2023