HDFS 的读写流程是怎么样的

本文详细介绍了HDFS,包括其产生的背景、优缺点、组成部分(NameNode、DataNode、SecondaryNameNode和Client)以及读写流程。HDFS适用于大规模数据存储,特别适合一次写入多次读出的场景,但不支持低延迟访问和并发修改。
摘要由CSDN通过智能技术生成

一、HDFS 介绍

1. HDFS 的产生及定义

  • 随着数据量越来越大,当在一个操作系统存不下所有的数据时,就需要分配到更多的操作系统管理的磁盘中存储,但由此带来管理和维护的不方便,因此需要一种系统来管理多台机器上的文件,从而产生了分布式文件管理系统。HDFS 是分布式文件管理系统中的一种。
  • HDFS(Hadoop Distributed File System),是一个分布式文件管理系统,用于存储文件,通过目录树来定位文件;其次,它是由多个服务器联合起来实现功能,集群中的服务器有各自的角色。
  • HDFS的使用场景:适合一次写入(后续只能追加不能修改),多次读出的场景。

2. HDFS 的优缺点

2.1 优点
  • 高容错性:数据会自动保存多个副本,且某个副本丢失后会自动恢复
  • 适合处理大数据:数据规模达到 GB、TB 甚至 PB;文件规模达到百万以上数量
  • 可构建在廉价的机器之上
2.2 缺点
  • 不适合低延时的数据访问
  • 无法高效对大量小文件进行存储:NameNode 的总存储空间是 128G,每个文件块为 150字节
  • 不支持并发写入、文件随机修改:同一个文件不允许多线程同时写;仅支持数据追加

二、HDFS 的组成架构

在这里插入图片描述

1. NameNode 介绍

  • NameNode,简称 NN,它是整个 HDFS 集群的 Master
  • 主要功能职责为:
    • 管理 HDFS 名称空间元数据
    • 配置副本策略(每个文件存几个副本)
    • 管理数据块映射信息(记载每个文件块存储在哪个 DataNode)
    • 处理客户端的读写请求

2. DataNode 介绍

  • DataNode,简称 DN,它是整个 HDFS 集群的 Slave
  • 主要功能职责为:
    • 存储实际的文件块数据
    • 执行数据块具体的读写操作

3. SecondaryNameNode 介绍

  • SecondaryNameNode,简称 2NN,不是 NN 的热备(不会代替 NN 工作),实际生产中并不会用到,而是采用 NN 的高可用方式(Zookeeper 配置多个 NN)来保证服务
  • 主要功能职责为:
    • 辅助 NN 工作,如定期合并 fsimage 和 edits,并推送给 NN
    • 紧急情况下辅助恢复 NN 部分数据

4. Client 客户端

  • 文件切分,当文件上传后将其切分成一个个的 block 存储(实际生产中一个文件块的大小为 128M 或 256M)
  • 与 NN 交互,获取文件位置信息
  • 与 DN 交互,读取或写入数据
  • 提供命令来管理 HDFS,如 NN 格式化
  • 提供命令来访问 HDFS,如对 HDFS 增删改查操作

三、HDFS 读写流程详解

1. 写数据流程

在这里插入图片描述

  • 客户端向 NameNode 发送请求上传文件到指定目录
  • NameNode 接收请求后,检查客户端权限和指定目录结构是否存在,检查通过后返回响应给客户端
  • 客户端接收可上传响应后,向 NameNode 请求获取可上传的 DataNode 列表
  • NameNode 选择合适的 DataNode 副本存储节点并返回给客户端
  • 客户端获取可上传的 DataNode 节点后向这些 DataNode 节点请求建立传输通道
  • 所有 DataNode 节点接收请求并返回应答
  • 客户端与 DataNode 节点建立连接后,将文件按照每 64K 一个 packet 的形式向 DN 进行传输,DN 接收数据包后通过缓存继续向下游的 DN 进行传输,并将缓存中的数据落盘到本地

2. 读数据流程

在这里插入图片描述

  • 客户端向 NameNode 发送请求下载指定目录的文件
  • NameNode 接收请求后,检查客户端权限和指定文件是否存在,检查通过后返回下载文件的元数据给客户端
  • 客户端接收到目标文件的元数据后,根据机架感知原则选择最近的 DN 节点请求下载文件,若选择的节点繁忙,则根据负载均衡请求另一 DN 节点的数据
  • 客户端与 DN 建立连接后,DN 向客户端传输数据,客户端串行接收数据
  • 25
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值