【大数据之Hadoop】六、HDFS之NameNode、Secondary NameNode和DataNode的内部工作原理

NN和2NN的内部工作原理

对于NameNode的存放位置:
内存中:好处:计算快
坏处:可靠性差,断电后元数据会丢失
磁盘中:好处:可靠性搞
坏处:计算慢
内存+磁盘中:效率低

所以设置在磁盘中的备份元数据的镜像文件FsImage(只存储数据),但元数据更新时需要同时更新FsImage,否则会产生数据一致性的问题,且断电后元数据会丢失。

引入Edits日志文件(只进行追加操作)。每当元数据有更新或者添加元数据时,修改内存中的元数据并追加到Edits中。一旦NameNode节点断电,通过FsImage和Edits的合并元数据。

引入一个新的节点SecondaryNamenode,专门用于定期合并FsImage和Edits。

综上,NameNode存放于内存中,FsImage和Edits存放与磁盘中,SecondaryNamenode定期合并FsImage和Edits,当开机时加载FsImage和Edits到NameNode。
在这里插入图片描述
1.第一阶段:NameNode启动
(1)第一次启动NameNode格式化后,创建Fsimage镜像文件和Edits日志文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
(2)客户端对元数据进行增删改的请求。
(3)NameNode记录操作日志,更新滚动日志。(先记录日志再更改内存,如果先更改内存再记录,在更改内存后遇到断电,则不会记录此次更改的记录,导致内存丢失)
(4)NameNode在内存中对元数据进行增删改。

2.第二阶段:Secondary NameNode工作
(1)Secondary NameNode询问NameNode是否需要CheckPoint(触发条件,定时器到期;Edits日志文件数据满)。直接带回NameNode是否检查结果。
(2)Secondary NameNode请求执行CheckPoint。
(3)NameNode滚动正在写入Edits日志。
(4)将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode。
(5)Secondary NameNode加载编辑日志和镜像文件到内存,并合并。
(6)加载后Secondary NameNode生成新的镜像文件fsimage.chkpoint。
(7)Secondary NameNode拷贝fsimage.chkpoint到NameNode。
(8)NameNode将fsimage.chkpoint重新命名成fsimage。

DataNode工作机制

在这里插入图片描述
(1)DataNode主动向NameNode汇报自己的块信息。
(2)NameNode则记录下 有哪些块是正常的,并向DataNode发送注册成功。
(3)DataNode每隔一个周期(6h)向NameNode汇报所有块的信息,保证数据的可靠性。
(4)DataNode和NameNode有周期性(3s)的互通信息,确保DataNode还是活动状态。
(5)若一定的时间NameNode没有收到DataNode信息,则任务该节点不可用(即NameNode不允许客户端向DataNode读写数据)。

数据的完整性

Hadoop使用crc校验位进行数据一致性校验,先对原始数据进行crc计算,然后与传输过来的crc校验位比较是否一致。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值