`

Hadoop namenode的fsimage与editlog详解

 
阅读更多
Namenode主要维护两个文件,一个是fsimage,一个是editlog。
fsimage:保存了最新的元数据检查点,包含了整个HDFS文件系统的所有目录和文件的信息。对于文件来说包括了数据块描述信息、修改时间、访问时间等;对于目录来说包括修改时间、访问权限控制信息(目录所属用户,所在组)等。
editlog:主要是在NameNode已经启动情况下对HDFS进行的各种更新操作进行记录,HDFS客户端执行所有的写操作都会被记录到editlog中。

简单来想,NameNode维护了文件与数据块的映射表以及数据块与数据节点的映射表,什么意思呢?就是一个文件,它切分成了几个数据块,以及这些数据块分别存储在哪些datanode上,namenode一清二楚。fsimage就是在某一时刻,整个hdfs 的快照,就是这个时刻hdfs上所有的文件块和目录,分别的状态,位于哪些个datanode,各自的权限,各自的副本个数。然后客户端对hdfs所有的更新操作,比如说移动数据,或者删除数据,都会记录在editlog中。
为了避免editlog不断增大,secondary namenode会周期性合并fsimage和edits成新的fsimage,新的操作记录会写入新的editlog中,这个周期可以自己设置(editlog到达一定大小或者定时)。



第一步:将hdfs更新记录写入一个新的文件——edits.new。
第二步:将fsimage和editlog通过http协议发送至secondary namenode。
第三步:将fsimage与editlog合并,生成一个新的文件——fsimage.ckpt。这步之所以要在secondary namenode中进行,是因为比较耗时,如果在namenode中进行,或导致整个系统卡顿。
第四步:将生成的fsimage.ckpt通过http协议发送至namenode。
第五步:重命名fsimage.ckpt为fsimage,edits.new为edits。

这样的话,fsimage与editlog合并的过程就完成了。所以如果namenode宕机,其实secondary namenode还保存这一份不久前的fsimage,还能挽回一些损失吧。
另外上篇中说,一旦有datanode挂掉了(宕机或者是网络阻塞),namenode能很快感知到,并且将宕机的节点上的数据块转移至其余空闲节点。这点是因为hdfs中心跳机制(heartbeat)。
心跳机制默认3s中一次,datanode会向namenode发送一次一跳,告知namenode当前节点上存放的数据文件是什么。如果namenode中记录的是该datanode存放了文件A的两个数据块和文件B的一个数据块,但是心跳中只有文件A的一个数据块信息,namenode就会知道该datanode数据块损坏了,会把损坏的数据块在别的datanode上补充。

转自:http://blog.csdn.net/chenkfkevin/article/details/61196409
  • 大小: 51 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    EditLog_src

    在此期间,NameNode不会接受任何写操作,直到将EditLog应用到最新的FSImage,生成新的FSImage并清空EditLog。 6. **EditLog的合并与 checkpoint**: - Checkpoint是将当前EditLog应用到最新FSImage的过程,生成新...

    NameNode职责.pptx

    了解NameNode的职责和fsImage、editLog文件的作用,对于理解HDFS的工作机理非常重要。 重点及难点 1. NameNode的职责:NameNode是HDFS的中心节点,负责维护文件系统的元数据。 2. fsImage文件查看:fsImage文件...

    Hadoop原理详细解析.pdf

    Secondary NameNode 不是备份,而是协助NameNode定期合并FsImage和EditLog,生成新的检查点,避免EditLog过大。这个过程中,Secondary NameNode获取FsImage和旧的EditLog,应用日志操作生成新的FsImage.ckpt,并将...

    Hadoop源代码分析(三六)

    1. **角色定位**:Secondary NameNode的主要任务是定期合并NameNode的元数据文件FSImage和EditLog文件,减轻NameNode的内存压力,确保系统的稳定运行。它并不直接参与用户数据的读写操作,而是在后台默默工作,维持...

    hadoop 高可用性HA部署

    2. **Secondary NameNode**:辅助NameNode定期合并fsimage和editlog,减少主NameNode的压力。然而,Secondary NameNode并不能立即接管主NameNode的角色。 **Facebook的AvatarNode方案**:Facebook提出了AvatarNode...

    Hadoop技术-HDFS元数据.pptx

    Editlog是在NameNode已经启动情况下对HDFS进行的各种更新操作进行记录,HDFS客户端执行所有的写操作都会被记录到Editlog中。Editlog是HDFS元数据管理流程中的重要组件,用于记录所有的写操作,确保数据的一致性和...

    hadoop概述及介绍

    当 Namenode 启动时,会合并 FsImage 和 Editlog 并生成新的 FsImage,这个过程称为检查点。为了提高效率,未来版本的Hadoop将支持周期性的检查点。 总的来说,Hadoop 提供了一个高效、可靠的分布式计算平台,通过...

    Hadoop原理详细解析.doc

    为了防止EditLog过大影响系统重启速度,Secondary NameNode扮演了一个辅助角色,定期将FsImage和EditLog合并成一个新的FsImage checkpoint,同时生成新的EditLog,确保NameNode的高效运行。 在HDFS中,DataNodes是...

    Hadoop HA(NFS)高可集群性主备配置.pdf

    常见的 HA 方案有两种:第一种是设置一个 NFS 的目录,存储 fsimage 和 editlog,第二种是设置 secondary namenode,对 fsimage 和 editlog 进行定期的 merge。 Hadoop HA 高可用集群性主备配置是解决 NameNode 单...

    HBase单点问题分析及分布式元数据管理方案

    2. 持久化元数据:Namenode将元数据信息存储在内存中,同时使用FsImage文件和事务日志(Edit Log)来保证数据安全。FsImage记录文件系统状态,Edit Log记录每次元数据的更改。 3. 处理请求:Namenode接收并处理...

    基于hadoop的词频统计.docx

    NameNode 负责管理文件系统的元数据,包括 FsImage 和 EditLog,其中 FsImage 存储文件系统的状态,EditLog 记录所有对文件系统的修改操作。Secondary NameNode 作为辅助角色,定期创建检查点,合并 EditLog 和 ...

    Hadoop之hdfs架构详解共2页.pdf.zip

    7. **Secondary NameNode**:辅助NameNode,主要负责周期性合并NameNode的edit log和fsimage,以减少NameNode重启时的恢复时间。 8. **读写流程**:读取操作通常从最近的DataNode开始,写入操作则首先将数据写入一...

    Hadoop HA(QJM)高可集群性配置

    当 Active NameNode 发生变更时,edit log 文件会被更新,而 Standby NameNode 会监控这些变更并将其应用到自己的 fsimage 中,以此保持与 Active NameNode 的同步。 - **DataNode 心跳与块报告:** DataNode 会向 ...

    Hadoop学习总结

    - **替换文件**: Namenode将旧的fsimage文件和edit log替换为新的fsimage文件和新的edit log。 **1.2.3 从元数据节点的目录结构** - **从元数据节点**: 包含用于辅助Namenode进行日志合并的文件。 **1.2.4 数据...

    Hadoop(HDFS).docx

    - **Secondary NameNode**:负责定期合并FsImage和EditLog文件,减轻主NameNode的压力。 **启动过程**: 1. **初始化**:第一次启动时创建FsImage和EditLog文件;非首次启动时直接加载这两个文件至内存; 2. **...

    Hadoop权威指南中文版.pdf

    - **Secondary NameNode**:这是一个辅助节点,它定期合并NameNode的fsimage和editlog文件,减少NameNode启动时间。 #### MapReduce架构 MapReduce架构同样采用了主从结构,主要包括以下几个组件: - **...

    大数据学习笔记

    Secondary Namenode处理流程包括收到来自Namenode的FsImage文件和Editlog,加载FsImage到内存,应用Editlog,并生成一个新的FsImage文件,然后将新的FsImage推送给Namenode。 二、HBase基本原理和常用命令 HBase是...

    hadoop3.1.1高可用配置

    4. **FSImage和EditLog**:配置NameNode的共享存储,如使用NFS,使得所有NameNode可以访问相同的元数据。 5. **配置文件**:修改`hdfs-site.xml`,设置`ha.zookeeper.quorum`为ZooKeeper地址,`dfs.nameservices`...

Global site tag (gtag.js) - Google Analytics