news 2026/6/15 19:28:09

HDFS读写流程详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HDFS读写流程详解

HDFS(Hadoop分布式文件系统)的读写流程设计体现了其高容错、高吞吐量的特点。以下是核心流程解析:


一、HDFS 写流程(客户端写入数据)

1. 客户端发起请求

  • 客户端调用FileSystem.create()方法,通过HDFS Client向 NameNode 发起文件创建请求。
  • NameNode 检查目标文件是否存在、客户端是否有权限,并记录文件元数据(不包含数据块位置)。

2. 数据管道建立

  • NameNode 根据副本数(默认3)和机架感知策略,返回一组DataNode列表(如:DN1、DN2、DN3),形成写入管道(Pipeline)
  • 客户端将数据按块(Block,默认128MB)切分,写入本地缓存,然后通过DFSOutputStream向管道写入。

3. 数据包传输

  • 数据被分成多个Packet(64KB),依次发送到管道:
    1. 客户端发送 Packet 给第一个 DN1;
    2. DN1 接收后传给 DN2,同时保存到本地;
    3. DN2 同理传给 DN3,形成流水线复制
  • 每个 DataNode 写入成功后,会向上游返回ACK 确认

4. 容错处理

  • 若管道中某个 DataNode 失败:
    • 管道关闭,剩余正常节点完成当前写入。
    • NameNode 重新分配新节点,恢复管道继续写入。
    • 已写入的块会被异步复制到满足副本数要求。

5. 完成写入

  • 所有数据块写入完成后,客户端通知 NameNode提交文件,NameNode 更新元数据(记录块与 DataNode 的映射)。
  • 若客户端不主动关闭,NameNode 不会认为文件已完成。

二、HDFS 读流程(客户端读取数据)

1. 客户端发起请求

  • 客户端调用FileSystem.open(),向 NameNode 请求文件元数据。
  • NameNode 返回文件的所有块列表,以及每个块的副本所在 DataNode 地址(按网络拓扑排序,优先返回最近节点)。

2. 并行读取

  • 客户端通过DFSInputStream按顺序读取块:
    • 直接连接最近的 DataNode读取第一个块。
    • 读取完成后,断开连接,再读取下一个块(可能从不同 DataNode)。
  • 数据以Packet 为单位流式传输,客户端边收边处理。

3. 容错机制

  • 若读取时遇到 DataNode 故障或数据损坏:
    • 客户端尝试从该块的其他副本节点读取。
    • 报告 NameNode 标记问题块,触发后续修复。

4. 关闭连接

  • 所有块读取完成后,客户端关闭输入流。

三、核心设计要点

特性写入流程读取流程
数据流动流水线复制(Pipeline)直接访问 DataNode
网络优化机架感知(就近写入)就近读取
容错管道重建、副本恢复自动切换副本
元数据交互仅开始和结束联系 NameNode仅开始获取块位置

四、示例命令

# 写入文件hadoop fs -put localfile /hdfs/path/# 读取文件hadoop fs -get /hdfs/path/file localdir

五、总结

  • 写流程:通过数据管道实现高效副本写入,由客户端驱动,NameNode 只协调初始布局。
  • 读流程客户端直连 DataNode,NameNode 仅提供块位置,避免成为瓶颈。
  • 关键思想移动计算而非数据(读时就近)、一次写入多次读取(写流程优化为顺序写入)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 12:08:15

CIPURSE协议深度分析:公共交通卡安全机制与研究方法探讨

CIPURSE协议深度分析:公共交通卡安全机制与研究方法探讨 【免费下载链接】proxmark3 Iceman Fork - Proxmark3 项目地址: https://gitcode.com/GitHub_Trending/pr/proxmark3 还在为复杂的公共交通卡安全机制而困惑?面对CIPURSE协议的层层加密感到…

作者头像 李华
网站建设 2026/6/10 10:24:14

Sqlserver查询java程序执行超慢sql直接在数据库工具里执行很快

今天记录一个比较隐晦不好排查的问题,写了个查询功能, 结果用户反馈在页面点查询得5 -6分钟才能出来,执行的过程中把数据库执行的sql取出来,字段替换掉在数据库直接执行很快不到1秒,结果在解决的过程中1.尝试的给sql的…

作者头像 李华
网站建设 2026/6/11 20:26:07

Hot100题4--相交链表

暴力法。这段代码用于找到两个链表的相交节点,使用双重循环遍历两个链表,外层循环遍历链表A的每个节点,内层循环遍历链表B的每个节点,比较节点引用是否相同(不是值相同),如果找到相同引用则返回…

作者头像 李华
网站建设 2026/6/14 22:41:10

【硬核深扒】彻底搞懂以太坊账户抽象(ERC-4337):告别助记词,Web3大规模落地的最后一块拼图 (为什么V神都在推?一文讲透“智能合约钱包”背后的技术原理与未来)

1. 背景:为什么现在的钱包这么难用? 现状: 助记词丢失即资产清零、Gas费必须用ETH支付、无法实现社交恢复。 观点: 只要用户还需要管理私钥,Web3 就永远无法在大众中普及。 引入: 账户抽象(Ac…

作者头像 李华
网站建设 2026/6/14 9:52:10

揭秘程序员的核心能力:为什么说技术架构只是冰山一角?深度解析程序员的真正竞争力!

简介 在AI技术快速发展的今天,程序员的职业定位正发生根本转变。AI已超越大多数程序员的技术能力,未来程序员的核心竞争力将从纯技术转向软能力(深度思考、人际连接、持续学习)、商业价值创造能力以及强大的内在驱动力。程序员需要…

作者头像 李华
网站建设 2026/6/13 5:49:10

算一算你盘中餐的“碳足迹”:这款工具如何让环保从餐桌开始?

你是否想过,我们日常的一餐饭,除了满足味蕾之外,还会对环境产生怎样的影响?食物从生产、加工到运输,每一个环节都可能留下碳排放的痕迹。如今,一款名为“膳食碳足迹计算器”的在线工具,正以直观…

作者头像 李华