Hadoop hdfs namenode管理元数据的原理、机制

一、namenode存储元数据的有三部分:

1、内存中,会存储所有元数据,但断电会丢失;

2、硬盘中,也会存储所有元数据,但由edits log+fsimage才是所有元数据;

(1) edits log日志文件中,存最新储增删改等操作,每当有这些操作,都会先存到日志文件中,但log有容量限制,并且容量不大(几十兆),每次快满时会把数据计算后刷入fsimage(在secondaryNameNode中操作);

(2) fsimage 镜像文件,镜像文件就是存储大部分元数据(并且是旧数据)。镜像文件的数据不是从内存中的元数据刷入的,因为这样会导致namenode的机器性能下降,而是每隔一段时间通过secondaryNameNode执行edits log的操作然后再刷入fsimage(具体步骤后面再说)

二、客户端写文件时namenode的流程

1、客户端想要写文件,先分块,然后会向namenode请求写各个文件块;

2、namenode收到写文件的请求后,先把写文件操作写入edits log中,然后把哪些datanode可以存储的信息返回给客户端;

3、客户端收到namenode的可以写入信息后,把各个文件数据块上传给相应的datanode节点。。各个数据块只上传一份到相应的datanode,至于会对这些数据块备份几份,则是由datanode根据配置进行备份,和客户端无关;

4、全部上传成功之后,客户端向namenode报告上传成功,此时该写入文件所增加或修改的元数据会更新到namenode的内存中(edits log在之前已经更新过了),此时edits log和fsimage不会进行更新,准确的说fsimage的数据不会被namenode更新,而是由secondaryNameNode更新;

三、namenode的edits log与fsimage是如何保证存储的元数据与内存中一致的?

请看:https://blog.csdn.net/qq_36951116/article/details/89704985

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值