11.1.1namenode和datanode的数据结构和格式以及镜像fsimage和编辑日志edit

Posted bclshuai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11.1.1namenode和datanode的数据结构和格式以及镜像fsimage和编辑日志edit相关的知识,希望对你有一定的参考价值。

1.1.1         永久性数据结构

namenode的目录结构如下图

 技术图片

 

 

(1)   VERSION属性文件

 技术图片

 

 

namespaceid文件系统命名空间唯一标识。

clusterID是将HDFS集群作为一个整体赋予的唯一标识符。

blockpoolID是数据块池的唯一标识。

CTime是namenode存储系统创建时间,格式变为0,升级文件系统后为更新时间戳

layoutVersion描述HDFS持久性数据结构的版本,结构变更的递减。

in_use.lock是一个锁文件,避免同时访问。

 

(2)   文件系统镜像fsimage和编辑日志edit

1)作用

文件系统镜像文件fsimage和编辑日志文件edit都是用来恢复文件系统。如果namenode的发生故障,可以通过载入镜像文件和执行编辑日志来还原。镜像文件比较大,如果频繁进行写操作,会很慢,而编辑日志就像是一个缓存一样,保存着最近一段时间内对文件的操作,定期的将编辑日志中的操作更新到文件镜像中。定期新建新的文件镜像,使namenode可以从不同的时间点来恢复文件系统

2)定义

文件系统镜像文件fsimage:镜像文件中保存的是文件系统中文件的目录结构、文件属性(修改时间、访问时间,访问许可,块大小,组成文件的块id)和目录属性。是对文件系统的完整镜像,很大,会被载入到内存中。定期新建新的镜像文件,能够让namenode从不同的时间点恢复文件系统。

编辑日志edit:因为对大的镜像文件写入数据会很慢,所以用编辑日志临时缓存对文件系统的元数据的操作记录。edits_inprogress_xxxxxx表示正处于打开状态可写的文件,其他eidt文件都是历史文件,客户端向HDFS写入文件后,先要更新编辑日志,才返回给客户端成功。编辑日志会不断增长,需要将编辑日志中的操作加入到镜像文件中,进行合并,合并的过程还不能影响主namenode的正常操作。

3)文件系统镜像和编辑日志的合并过程

 技术图片

 

 

如上图所示,通过辅助namenode合并后在发给主namenode,不影响主namenode的正常工作,又能充分利用辅助namenode的性能,形成备份镜像。

a)      主namemode新建一个编辑日志文件edit_inprogress用来写入新的操作记录。

b)      辅助namenode采用HTTP GET从主namenode获取最近的文件系统镜像fsimage和edit编辑日志文件。

c)      辅助namenode将fsimage文件载入内存,执行edit文件中事务,将edit中的操作合并到fsimage,形成新的fsimage文件。

d)      辅助namenode通过HTTP PUT将fsimage发送到主namenode,主namenode命名fsimage文件,日后使用。

这个过程也说明了为什么主副namenode需要相同的内存需求。

(3)   创建新的fsimage镜像文件配置

辅助namenode每隔一小时就会就会触发创建新的fsimage镜像文件(检查点),可以通过属性dfs.namenode.checkpoint.period设置时间间隔。或者编辑日志的大小超过100.万(属性dfs.namenode.checkpoint.txns)个事务,也会新建fsimage镜像文件(检查点),检查是否超过100万个事务的时间间隔是1分钟(属性dfs.namenode.checkpoint.check.period)。

(4)辅助namenode

辅助namenode目录布局和主namenode的布局相同,主namenode故障时,可以从辅助namenode恢复数据,或者直接将副的变成主的。

(5)datanode的目录结构

 技术图片

 

 

datanode目录在初创阶段自动生成,blk开头的文件包含文件存储的块的原始字节数,meta结尾的文件是块相关联的元数据(版本,类型,校验和等文件属性)文件。目录中 数据块的数量增加到64(dfs.datanode.numblocks属性配置)个,创建一个子目录保存数据块文件,避免成千上万个文件放在同一个目录。

 

自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:

https://www.cnblogs.com/bclshuai/p/11380657.html

以上是关于11.1.1namenode和datanode的数据结构和格式以及镜像fsimage和编辑日志edit的主要内容,如果未能解决你的问题,请参考以下文章

什么是NameNode和DataNode?他们是如何协同工作的?

04 namenode和datanode

Datanode启动但不是namenode

namenode和datanode机制

Hadoop 从 namenode 和 datanode 文件恢复

HDFS设计之namenode和datanode