HDFS的角色与工作原理

HDFS的角色

一个Master: NameNode

        NameNode负责存储元数据,以树形结构储存目录,但是block块位置不会长久保存,每次开机需要重新获取block块位置(由DataNode汇报给NameNode)

多个Slave: DataNode

        负责储存数据,一个大文件会被切分成多个block块,每块128M,并且会有三份副本,保证数据安全

SecondaryNameNode:

        负责辅助NameNode处理元数据

HDFS的元数据管理

        由于HDFS中元数据全部存储在一个NameNode的内存中,一旦发生单点故障整个集群的元数据就会丢失,导致集群无法使用,所以有 fsimage(保存元数据信息,在磁盘中)和edits(保存数据操作信息,在磁盘中)来保证元数据不会丢失,断电后只需将edits和fsimage合并即可得到元数据,为了保证该过程的效率,引入了secondaryNameNode,以下为该过程(checkpoint)流程:

        1.进行元数据操作时,会将操作记录在edits中,当edits存储操作条数达到一百万或者checkpoint过程间隔达到一小时则会将edits发送给SecondaryNameNode,并且将新产生的操作数据写入新的edits

        2.SecondaryNameNode收到edits后将自身储存的fsimage和发送过来的edits加载到内存中进行合并,合并后产生新的fsimage覆盖原本储存的fsimage,并将新产生的fsimage发送给NameNode

        3.NameNode收到新的fsimage后将旧的覆盖

        因为checkpoint过程的存在如果发生断电,NameNode只需要将自身的edits和fsimage合并即可得到完整的元数据信息

HDFS写流程

1.client端向NameNode发送写入请求

2.NameNode检查文件是否存在,用户是否有操作限权,通过检查后返回第一个block块的储存位置列表

3.client端收到储存位置列表后形成pipeline,将bleock块分成64k的packet进行传输,client端发送给第一个DataNode,第一个DataNode链接并发送给第二个DataNode,第二个链接并发送给第三个DataNode

4.重复以上步骤直到第一个block块传输完成,重复申请写操作直到文件传输完成

HDFS读操作

1.client端向NameNode请求读取数据

2.NameNode检查文件是否存在,用户是否有操作限权,检查通过后将第一个block块存储位置发送给client端

3.client端根据拓扑原理从距离最近的DataNode读取block块数据

4.重复以上操作直到文件传输完成,最后将所有block块合并成一个完整文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值