HDFS永久性数据结构分析
一.namenode文件目录
VERSION:包含运行hdfs的版本信息
- layoutVersion属性:hdfs数据结构的版本号,只要数据结构改变,版本号递减。
- namespceID:文件系统命名空间唯一标识,namenode首次格式化创建。
- clusterID:hdfs集群唯一标识,在联邦hdfs十分重要。
- blockpoolID:数据块池唯一标识,数据块池包含有一个NameNode管理的命名空间中的所有文件。
编辑日志:由edit及后缀(事务id)组成
- 客户端执行写操作,这些事务会记录到其中。
映像文件:fsimage及后缀(映像文件最后一个事务)组成
- 文件系统元数据的完整永久性检查点
- namenode启动、故障时:最近的fsimage文件载入到内存以重构元数据的最近状态。从相关点开始向前执行编辑日志中记录的每个事务。(正因如此,namenode重启会很慢)
为了解决上述(重启)问题,使用辅助namenode创建检查点
- 1.namenode停止正在进行的edit文件(产生新文件)。2.辅助namenode从主namenode获取最近的fsimage和edits文件。3.辅助namenode将fsimage文件载入内存,执行edits中的事务,合并成新fsimage文件。4.将新fsimage文件发送给主namenode
- 通常,辅助namenode隔一小时创建一个检查点。如果编辑日志大小达到100万个事务,改为 一分钟一次
二.dadanode文件目录
元数据文件:blk及原始字节数为后缀组成
- 包块头部和一系列校验和组成
- 每个块属于一个数据块池,每个数据块池都有自己的存储目录
三.安全模式
namenode启动时,载入fsimage文件到内存,建立文件系统原数据,此过程处于安全模式(客户端只有只读操作)。
冷知识
复本
三个复本不区分主从关系
联邦HDFS
为了解决hadoop1.0中namenode的压力问题而引入。
可以添加namenode管理不同命名空间
HA
2.0中支持两个namenode,3.0中可以一主多从
块缓存
对于频繁访问的文件,其对应的块可能被显示地缓存在datanode的内存中。
检查校验和命令
fs -checksum
hdfs的读取和写入:
https://blog.csdn.net/weixin_43093501/article/details/89423504
hdfs知识点