HDFS的架构原理(读写流程,元数据的管理)

Hadoop的学习笔记

目录

Hadoop的学习笔记

Namenode如何管理元数据

SecondaryNameNode如何辅助管理元数据

HDFS的写数据流程

 HDFS的读数据流程


Namenode如何管理元数据

        namenode的主要职责:管理整个集群以及元数据的管理。

        

1.namenode通过管理Edits文件和Fslmage文件来实现管理元数据的目的。

2.Edits文件,相对比较小,修改起来速度较快,记录的是最近一段时间的元数据信息。

3.FsImage文件,相对较大,记录的是HDFS的所有元数据。

4.HDFS集群启动的时候,namenode会去加载FsImage文件和最近的那个Edits文件的元数据进内存。

Edits文件和FsImage文件的存储位置在:/export/data/hadoop/dfs/name/current

SecondaryNameNode如何辅助管理元数据

 1.SecondaryNameNode会实时监听(间隔60秒)Edits文件的状态,当其(Edits文件)达到一定的阈值(1个小时或者100w次),SecondaryNameNode就会通知namenode禁用该Edits文件,然后创建1个新的Edits文件,继续往里面写入。

2.SecondaryNameNode会通过Http协议将namenode中的Edits文件和FsImage文件拉取到本地进行合并,形成新的FsImage文件,合并的全程,namenode不参与。

3.之后SecondaryNameNode会将合并后的新的FsImage文件推送给namenode,用来替代旧的FsImage文件。

4.namenode上会有大量的Edits文件和一堆的FsImage文件,这些文件不会立马被删除,而是在服务重启的时候,或者达到一定的阈值才会被删除。

HDFS的写数据流程

1.Client请求namenode,上传文件。

2.namenode接收到请求后,校验写的权限,然后告知Client是否可以写数据。

3.假设可以写数据,此时Client会将文件进行切块(默认:128mb/块)。

4.Client重新请求namenode,第1个Block的上传位置。

5.namenode返回第一个块的上传位置,即:datanode列表。

6.Client和最近的那个datanode建立连接,并依次和其他的datanode建立连接,形成传输管道(piepeline)。

7.采用数据报包(默认:64kb)的方式传输数据,并建立反向应答机制(ACK)。

8.依次传输,直到第1个Block块传输完毕。

9.第一个Block块传输完后,其他的Block块会重复以上步骤,直到所有的Block块传输完毕。

10.HDFS的写数据流程结束。

 HDFS的读数据流程

1.Client请求namenode,读取文件数据。

2.namenode校验读的权限合法后,返回该文件的部分或者全部的Block块信息(即:这些块在哪些datanode节点上存储)。

3.Client连接这些datanode,并行的从中读取这些Block块的信息。

4.当上述的块信息读取完毕后,Client会再次请求namenode获取剩下的Block块信息,直到所有的块读取完毕。

5.按照块的标号,对读取到的数据做合并,获取最终结果文件,至此HDFS的读数据流程完毕。 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值