Hadoop入门——元数据管理机制

1.HDFS架构

包含NameNode、DataNode、Secondary NameNode

(1)NameNode

    是整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。接收用户的操作请求。
    文件包括:
    fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息;
    edits:操作日志文件;

    fstime:保存最近一次checkpoint的时间。

    NameNode工作特点:Namenode始终在内存中保存metedata,用于处理“读请求”。到有“写请求”到来时,namenode会首先写editlog到磁盘,即向edits文件中写日志,成功返回后,才会修改内存,并且向客户端返回。Hadoop会维护一个fsimage文件,也就是namenode中metedata的镜像,但是fsimage不会随时与namenode内存中的metedata保持一致,而是每隔一段时间通过合并edits文件来更新内容。Secondary namenode就是用来合并fsimage和edits文件来更新NameNode的metedata的。

(2)DataNode

    一个数据块在Datanode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。文件切分成块,(默认大小128M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3)。

(3)Secondary NameNode

    Secondary NameNode是HA的一个解决方案。

    执行过程:从NameNode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并将其推送到NameNode,替换旧的fsimage.

2.整体工作流程


(1)客户端申请上传文件,查询NameNode中维护的元数据;

(2)从NameNode返回分配的DataNode;

(3)将分块后的文件Block块存到相应的DataNode;

(4)客户端将每个Block写一份副本到对应DataNode,再由DataNode向其他DataNode进行拷贝,拷贝不由客户端处理。如果拷贝失败则重新找DataNode接受失败副本。

3.元数据的管理


(1)客户端上传文件时,向NameNode发送请求;

(2)NameNode首先往Edits log中记录元数据的操作日志;

(3)返回分配的DataNode;

(4)将相应的文件块传给对应的DataNode;

(5)传送完成后,将成功信息返回给NameNode;

(6)将Edits log中的信息追加到内存中,即NameNode在内存中写入本次操作的新产生的元数据信息;

(7)每当Edit log写满时,需要将这一段时间的新元数据刷新到fsimage中。

4.Edits log和fsimage合并

(1)通知Secondary NameNode进行CheckPoint操作;

(2)NameNode停止王Edits log中写数据,创建一个新的Edits log.new用于记录这段时间写入的数据;

(3)将Edit log和fsimage下载到Secondary NameNode中,由于第(2)步操作,此时两个文件处于静止状态;

(4)在Secondary NameNode中将Edit log和fsimage进行合并,生成新的元数据镜像文件fsimage.checkpoint;

(5)将fsimage.checkpoint上传到NameNode,替换原来的fsimage,再删除原来的Edits log,并将Edits log.new重命名为Edits log,此时NameNode内部结构与合并前一致。

猜你喜欢

转载自blog.csdn.net/qq_38550836/article/details/79338200