Hadoop 教程 - HDFS读写流程

Hadoop Distributed File System (HDFS) 的读写流程是其核心功能之一,下面分别概述HDFS的读取和写入流程:

HDFS写入流程

  1. 文件切分:客户端将要上传的文件切分成多个数据块(默认大小为128MB或根据配置设定),每个数据块称为Block。

  2. 与NameNode交互:客户端联系NameNode,请求上传文件,并提供文件的元数据信息(如文件名、文件大小、数据块数量等)。NameNode检查文件是否已存在,验证客户端权限,并确认有足够的空间存储数据块。

  3. 获取存储位置:NameNode确定哪些DataNode将存储这些数据块的副本(默认为3个副本,存放策略会考虑到机架感知以优化数据分布和故障恢复速度),并将这些DataNode的地址信息返回给客户端。

  4. 数据写入:客户端按照NameNode提供的DataNode列表,直接将数据块写入第一个DataNode,这个DataNode负责将数据块复制到其他副本所在的DataNode上。在此过程中,DataNode之间通过流水线复制技术高效地传输数据,减少网络带宽消耗。

  5. 确认写入:所有数据块成功写入后,客户端向NameNode报告写入完成,NameNode更新元数据信息,记录文件的Block信息及其位置。

HDFS读取流程

  1. 请求文件:客户端向NameNode发起请求,请求读取指定文件。

  2. 获取Block信息:NameNode根据文件名查找元数据,确定该文件所有数据块的位置信息,并将最近的(基于网络拓扑和机架感知策略)DataNode地址列表返回给客户端。这样可以优化读取速度,减少网络传输延时。

  3. 数据读取:客户端根据DataNode地址列表,直接与其中一个DataNode建立连接并开始读取数据。读取过程中,客户端可以并行从不同的DataNode读取不同Block以加速读取过程,但通常情况下,客户端会按顺序读取Block。

  4. 数据校验:客户端在读取数据时会进行校验和验证,确保数据的完整性。如果发现某个Block损坏或不可用,客户端会尝试从其他副本所在的DataNode读取该Block。

  5. 数据组装:客户端将从各个DataNode读取到的数据Block按照正确的顺序组装起来,最终构成完整的文件。

通过上述流程,HDFS实现了高效、可靠的文件存储和访问,尤其适合大规模数据处理场景。在整个过程中,NameNode负责协调和管理,而实际的数据传输和存储则发生在客户端和DataNode之间,减轻了NameNode的负担。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值