Hadoop文件系统元数据fsimage和编辑日志edits

转载 2015年11月19日 17:56:13


转自: http://www.iteblog.com/archives/968




NameNode的$dfs.namenode.name.dir/current/文件夹的几个文件:

1 current/
2 |-- VERSION
3 |-- edits_*
4 |-- fsimage_0000000000008547077
5 |-- fsimage_0000000000008547077.md5
6 `-- seen_txid

  其中存在大量的以edits开头的文件和少量的以fsimage开头的文件。那么这两种文件到底是什么,有什么用?下面对这两中类型的文件进行详解。在进入下面的主题之前先来搞清楚edits和fsimage文件的概念:
  (1)、fsimage文件其实是Hadoop文件系统元数据的一个永久性的检查点,其中包含Hadoop文件系统中的所有目录和文件idnode的序列化信息;
  (2)、edits文件存放的是Hadoop文件系统的所有更新操作的路径,文件系统客户端执行的所以写操作首先会被记录到edits文件中。
  
  fsimage和edits文件都是经过序列化的,在NameNode启动的时候,它会将fsimage文件中的内容加载到内存中,之后再执行edits文件中的各项操作,使得内存中的元数据和实际的同步,存在内存中的元数据支持客户端的读操作。

  NameNode起来之后,HDFS中的更新操作会重新写到edits文件中,因为fsimage文件一般都很大(GB级别的很常见),如果所有的更新操作都往fsimage文件中添加,这样会导致系统运行的十分缓慢,但是如果往edits文件里面写就不会这样,每次执行写操作之后,且在向客户端发送成功代码之前,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启动的时候非常长!在下篇文章中我会谈到在Hadoop 1.x版本和Hadoop 2.x版本是怎么处理edits文件和fsimage文件的。



浅谈hadoop(五)——hadoop简介 文件系统元数据的持久化

浅谈hadoop(五)——hadoop简介 本文翻译素材来自hadoop官网:http://hadoop.apache.org/docs/current/hadoop-project-dist/ha...
  • wild46cat
  • wild46cat
  • 2016年11月30日 17:33
  • 382

hadoop的元数据fsimage和edits

在《Hadoop NameNode元数据相关文件目录解析》文章中提到NameNode的$dfs.namenode.name.dir/current/文件夹的几个文件: 1...
  • qa38113202
  • qa38113202
  • 2016年06月16日 12:03
  • 484

hadoop之fsimage和edits工作机制和元数据namenode宕机恢复

hadoop之fsimage和edits工作机制和元数据namenode宕机恢复
  • willwill101
  • willwill101
  • 2016年09月29日 14:30
  • 1294

Hadoop NameNode的元数据持久化存储FSImage和日志存储EditLog源代码分析

HDFS NameNode High Availability中一个关键的问题就是Editlog如何保存,怎么才能保证在Active和Standby的NameNode切换时Editlog不丢失记录,也...
  • lskyne
  • lskyne
  • 2013年04月24日 10:25
  • 5395

Hadoop-2.X HA模式下的FSImage和EditsLog合并过程

Hadoop-2.X中HA模式下FSImage和EditsLog的checkpoint操作过程分析
  • dabokele
  • dabokele
  • 2016年06月15日 23:57
  • 3206

【总结】Hadoop文件系统元数据fsimage和编辑日志edits

原文:https://www.iteblog.com/archives/968.html   https://www.iteblog.com/archives/969.html  https://ww...
  • dengxing1234
  • dengxing1234
  • 2017年03月09日 10:18
  • 22512

Hadoop文件系统元数据fsimage和编辑日志edits

转自:http://www.iteblog.com/archives/968   在《Hadoop NameNode元数据相关文件目录解析》文章中提到NameNode的$dfs.nameno...
  • BrotherDong90
  • BrotherDong90
  • 2015年08月21日 14:12
  • 593

HDFS fsimage和edits合并实现原理

1. Hadoop 1.x 版本 fsimage和edits合并实现原理  在NameNode运行期间,HDFS的所有更新操作都是直接写到edits中,久而久之edits文件将会变得很大;虽然这对Na...
  • yanshu2012
  • yanshu2012
  • 2017年01月22日 17:25
  • 835

Hadoop-2.4.1学习之edits和fsimage查看器

在hadoop中edits和fsimage是两个至关重要的文件,其中edits负责保存自最新检查点后命名空间的变化,起着日志的作用,而fsimage则保存了最新的检查点信息。这个两个文件中的内容使用普...
  • sky_walker85
  • sky_walker85
  • 2014年10月31日 10:31
  • 4534

(3)hadoop学习——namenode的fsimage与editlog详解

Namenode主要维护两个文件,一个是fsimage,一个是editlog。 fsimage保存了最新的元数据检查点,包含了整个HDFS文件系统的所有目录和文件的信息。对于文件来说包括了数据块描述信...
  • chenKFKevin
  • chenKFKevin
  • 2017年03月10日 14:15
  • 2604
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hadoop文件系统元数据fsimage和编辑日志edits
举报原因:
原因补充:

(最多只允许输入30个字)