HDFS基本原理

HDFS基本原理

1、NameNode概述

  • 是HDFS的核心
  • 也成为了Master
  • 仅存储HDFS的元数据:文件系统中所有文件的目录树,并跟踪整个集群中的文件
  • 不存储实际数据或数据集。数据本身实际存储在DataNodes中
  • 知道HDFS中任何给定文件的块列表及其位置。使用此信息Namenode知道如何从块中构建文件
  • 并不持久化存储每个文件中各个块所在的DataNode的位置信息,这些信息会在系统启动时从数据节点重建
  • 对于HDFS至关重要,当NameNode关闭时,HDFS无法访问
  • 是Hadoop集群中的单点故障
  • 所在机器通常会配置有大量内存

2、DataNode概述

  • 负责将实际数据存储到HDFS
  • 也称为Slave
  • 会和Namenode保持不断通信
  • 启动时,它会将自己发布到NameNode并汇报自己负责持有的块列表
  • 当某个DataNode关闭时,它不会影响数据或集群的可用性。NameNode将安排由其他DataNode管理的块进行副本复制
  • 所在机器通常配置有大量的的硬盘空间。因为实际数据存储在DataNode中
  • DataNode会定期(dfs.heartbeat.interval配置项配置,默认是3秒)向NameNode发送心跳,如果NameNode长时间没有接受到DataNode发送的心跳, NameNode就会认为该DataNode失效。
  • block汇报时间间隔取参数dfs.blockreport.intervalMsec,参数未配置的话默认为6小时.

3、HDFS写数据流程

在这里插入图片描述
1)客户端向Namenode发送上传请求 (RPC调用)
2)Namenode判断是否有写权限
3) 返回可上传响应
4)请求上传第一个block(128M)
5)根据请求并结合namenode情况及副本放置策略,找出3个可用的datanode位置信息
6)返回datanode信息
7)与第一个datanode建立pipeline(管道),第一个与第二个datanode建立pipeline,第二个与第三个建立pipeline
8)一次返回建立pipeline成功信息
9)客户端开始上传第一个block数据,以packet(64k)为大小进行发送
10)第一个datanode接收到packet保存并推送给后续节点
11)返回ACK校验
12)当地一个block上传成功,重复4-11步
13)当所有数据上传完毕后,通知namenode,namenode把最终数据结果同步到元数据信息

4、HDFS读流程

在这里插入图片描述
1)客户端请求下载文件
2)namenode判断是否具有读权限,视情况分批返回block位置信息,返回结果是有序的
3)返回元数据的位置信息
4)在同一个批次中,客户端开启多个线程,并行下载
5)下载完成后,按照块的编号进行拼接追加,成为最终的样子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值