hadoop中的fsimage和edits的介绍

在进入下面的主题之前想来搞清楚edits和fsimage文件的概念:

1,fsimage文件其实是hadoop文件系统元数据的一个永久性的检查点,其中包含hadoop文件系统中的所有目录和文件idnode的序列化信息。

2,edits文件存放的是hadoop文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到edits文件中。

元数据的介绍:

元数据的分类
按形式分类:内存元数据和元数据文件;它们的存在的位置分别为:内存和磁盘上。其中内存元数据主要是hdfs文件目录的管理;元数据文件则用于持久化存储。
按类型分,元数据主要包括:
1、文件、目录自身的属性信息,例如文件名,目录名,修改信息等。
2、文件记录的信息的存储相关的信息,例如存储块信息,分块情况,副本个数等。
3、记录HDFS的Datanode的信息,用于DataNode的管理。


内存元数据主要fsimage,而通过checkpoint功能备份的也主要是内存的元数据。

fsimage和edits文件都是经过序列化的,在NameNode启动的时候,他会将fsimage文件中的内容加载到内存中,之后再执行edits文件中的各项操作,使得内存中的元数据和实际

的同步,存在内存中的元数据支持客户端的读操作。

NameNode起来之后,HDFS的更新操作会重新写到edits文件中,因为fsimage文件一般都很大(GB级别的很常见),如果所有的更新操作都往fsimage文件中添加,这样会导致系统运行

的十分缓慢。但如果往edits文件里面写就不会这样,因此,客户端对hdfs进行写文件时首先被记录在edits文件中,edits修改时元数据也会更新,每次hdfs更新时edits先

更新后客户端才会看到最新信息。如果一个文件比较大,使得写操作需要向多台机器进行操作,只有所有的操作都执行完成后,写操作才会返回成功,这样的好处是任何的操作都不会因为机器的故障而导致元数据的不同步。

fsimage包含hadoop文件系统中的所有目录和文件idnode的序列化信息,对于文件来说,包含的信息有修改时间,访问时间,块大小和组成一个文件块信息等;对于目录来说,包含的信息主要有修改时间,

访问控制权限等信息。fsimage并不包含DataNode的信息,而是包含DataNode上快的映射信息,并放到内存中,当一个新的DataNode加入到集群中,DataNode都会向NameNode提供块的信息,而NameNode

会定期的索取块的信息,以使得NameNode拥有最新的块映射。因为fsimage包含Hadoop文件系统中的所有目录和文件idnode的序列化信息,所以如果fsimage丢失或者损坏了,那么即使DataNode上有块的数据,但是我们没有文件到块的映射关系,我们也无法用DataNode上的数据!所以定期及时的备份fsimage和edits文件非常重要!

文件系统客户端执行的所有写操作首先会被记录到edits文件中,长此下去,edits会非常的大,而NameNode在重启的时候需要执行edits文件中的各项操作,由此会导致NameNode启动的时间会很长,由此,定期地合并fsimage和edits文件的内容,然后清空edits文件是非常重要的。

 

完成合并的是secondaryNamenode,会请求namenode停止使用edits,暂时将新写操作放入一个新的文件中(edits.new)。

secondarynamenode将namenode中通过http get获得edits,因为要和fsimage合并,所以也是通过http get的方式把fsimage加载到内存,然后执行具体对文件系统的操作,与fsimage合并,生成新的

fsimage,然后把fsimage发送到namenode,通过http post的方式。namenode从secondarynamenode获得了fsimage后会把原有的fsimage替换为新的fsimage,把edits.new变成edits。同时会更新fstime。

secondarynamenode在合并edits和fsimage时需要消耗的内存和namenode差不多,所以一般把namenode和secondarynamenode放在不同的机器上。

fs.checkpoint.period:默认是一个小时

fs.checkpoint.size:edits达到一定大小时也会出发合并。

 

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Hadoop是一个分布式存储和计算系统。它由一组节点组成,每个节点都有存储和计算功能。 Hadoop有两种节点:NameNode和DataNode。 NameNode是Hadoop的管理节点,负责维护文件系统的元数据,即文件名、块位置、块大小等信息。它还负责维护文件系统的命名空间,即文件目录结构。 DataNode是Hadoop的存储节点,负责存储文件的实际数据块。它接收来自NameNode的命令,将数据块写入磁盘,并在需要时将数据块读取出来。 Hadoop还有一个组件:SecondaryNameNode。它的作用是定期从NameNode拉取元数据的副本,并与NameNode进行同步。如果NameNode出现故障,可以使用SecondaryNameNode上的元数据副本来恢复。 简而言之,NameNode负责文件系统的元数据管理和命名空间维护,DataNode负责存储文件的实际数据块,SecondaryNameNode负责与NameNode的元数据同步。 ### 回答2: Hadoop的NameNode(NN)和SecondaryNameNode(2NN)是HDFS(分布式文件系统)的重要组件,它们都承担着维护文件系统元数据的责任,但在工作原理上有所不同。 NameNode是HDFS的主节点,它负责管理文件系统的命名空间和其它重要的元数据信息。当客户端请求执行某个文件操作时,首先会与NameNode通信,NameNode会返回相应的数据块所在的DataNode列表,然后客户端才能与对应的DataNode进行通信。NameNode还记录了文件的层次结构、文件块的位置、复本数量以及各个DataNode的健康状况等信息。NameNode将元数据信息存储在内存,并定期将其持久化到本地磁盘以防止系统故障时的数据损失。因此,NameNode的工作可简单概括为处理元数据请求、维护文件系统结构、存储数据块位置信息。 SecondaryNameNode(或者称为CheckpointNode)并不是NameNode的替代物,仅用于辅助NameNode进行元数据的备份和合并。SecondaryNameNode根据预定的时间间隔或事务数目,从主节点得到元数据的快照,并将其存储在本地文件系统上。这样就可以在主节点出现故障的情况下,通过使用SecondaryNameNode上的快照信息来恢复主节点。此外,SecondaryNameNode还负责合并NameNode的编辑日志,将内存的元数据信息与编辑日志存储的增量变更合并,减轻了NameNode的元数据负担。 综上所述,NameNode是Hadoop负责管理文件系统元数据的主节点,而SecondaryNameNode则是辅助NameNode进行备份和合并工作的节点。它们的工作原理是相辅相成的,共同维护HDFS的可靠性和高可用性,在大规模数据存储和处理的分布式环境起到了关键的作用。 ### 回答3: Hadoop的NN(NameNode)和2NN(Secondary NameNode)是Hadoop分布式文件系统(HDFS的关键组件,它们共同协同工作来保障数据的高可用性和数据一致性。 NN是HDFS的主节点,负责存储和管理文件系统的元数据信息,包括文件和目录的命名空间、块到数据节点的映射关系等。NN也负责处理客户端的文件操作请求,例如文件的读写、创建和删除等。NN将元数据以文件fsimage)和编辑日志(edits)的形式存储在本地磁盘上。NN的工作原理如下: 1. 当客户端发起文件写入请求时,NN接收到请求后会先将文件的元数据记录到内存,并返回给客户端一个文件写入路径。 2. 当客户端结束文件写入后,NN将文件划分为固定大小的数据块,并记录下每个数据块所在的数据节点信息。 3. 当客户端请求文件读取时,NN根据文件元数据信息获取到数据块的位置,并返回给客户端所需的数据节点信息。 2NN是NN的辅助节点,它主要用来定期合并NN的文件系统元数据和编辑日志,生成新的文件系统镜像(fsimage)和编辑日志快照(edits),以便在NN发生故障时进行故障恢复。2NN的工作原理如下: 1. 2NN定期从NN获取文件系统的编辑日志,并将这些编辑日志合并到之前的镜像文件上,生成新的文件系统镜像和编辑日志快照。 2. 当NN发生故障时,2NN可以用其最新文件系统镜像和编辑日志快照来帮助恢复NN,以保障文件系统的高可用性。 总结来说,NN负责管理HDFS文件系统元数据信息和处理客户端的文件操作请求,2NN则负责定期合并NN的元数据信息和编辑日志,以备份和恢复NN的故障。通过NN和2NN的协同工作,Hadoop能够提供高可用性的分布式文件存储和处理服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值