Hadoop深入浅出之HDFS分析 第一讲:基本概念

来源:互联网 发布:c语言short占几个字节 编辑:程序博客网 时间:2024/04/28 04:59

第一讲:基本概念

1.1数据块(block)


默认基本存储单位块大小为:64M。JDW采用128M作为块大小;

和普通文件系统相同的是,HDFS中的文件是被分成64M一块进行数据块存储的。

不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不会占用整个数据块的存储空间.

blk_<id>保存的是HDFS的数据块,其中保存了具体的二进制数据。

blk_<id>.meta保存的是数据块的属性信息:版本信息,类型信息和checknum

当一个目录中的数据块达到一定数量的时候,则会创建子文件夹来保存数据块及数据块属性信息。


1.2元数据节点文件夹结构

VERSION文件是java properties文件,保存了HDFS的版本号。

namespaceID=788590977
cTime=0
storageType=NAME_NODE
layoutVersion=-32
layoutVersion是一个负整数,保存了HDFS的持续化在硬盘上的数据结构的格式版本号。当HDFS的持久化数据结构发生了变化,如增加了一些其他的操作或者字段信息,则版本号会在原来的基础上减1;Hadoop1.2.1版本中,layoutVersion的值是-41,它与Hadoop的发型版本号是两回事;layoutVersion主要在fsimage和edit日志文件、数据存储文件中使用。


namespaceID是文件系统的唯一标识符,是在文件系统初次格式化时生成的。在HDFS集群启动以后,使用namespaceID来识别集群中的Datanode节点,也就是说,在HDFS集群启动的时候,各个Datanode会自动向Namenode注册获取到namespaceID的值,然后将该值存储到Datanode节点的VERSION文件中。


cTime:表示Namenode存储对象(即Fsimage对象)创建的时间,但是在初始化时它的值是0。如果由于layoutVersion发生变化触发了一次升级过程,则会更新该时间字段的值。


storageType表示此文件夹中保存的是元数据节点的数据结构。


1.3文件系统命名空间映像文件及修改日志


当文件系统客户端(Client)进行写操作时,首先把它记录在修改日志中(edit log)

元数据节点(Namenode)在内存中保存了文件系统的元数据信息。在记录了修改日志(edit log)后,元数据节点(Namenode)则修改内存中的数据结构。

每次的写操作成功之前,修改日志都会同步(sync)到文件系统。

fsimage文件,也即命名空间映像文件,是内存中的元数据在硬盘上的checkpoint,它是一种序列化的格式,并不能够在硬盘上直接修改。

同数据的机制相似,当元数据节点(Namenode)失败时,最新的checkpoint的元数据信息会从fsimage加载到内存中,然后逐一重新执行修改日志中的操作。

从元数据节点(Secondary Namenode)就是用来帮助元数据节点(Namenode)将内存中的元数据信息checkpoint到硬盘上的。




0 0
原创粉丝点击