当前位置: 首页 > news >正文

Hadoop HDFS 体系结构与文件读写流程剖析


Hadoop HDFS 体系结构与文件读写流程剖析

一、HDFS 理论基础

HDFS(Hadoop Distributed File System) 是 Hadoop 的分布式文件系统,专为大规模数据存储和高吞吐量访问设计,具备高容错性和可扩展性,适合部署在廉价硬件集群上。

1. 主要组件

  • NameNode:负责管理文件系统的元数据(如目录结构、文件到块的映射、块副本位置等)。
  • DataNode:负责实际数据块的存储、读写操作。
  • Secondary NameNode:辅助 NameNode 合并编辑日志与镜像文件(fsimage),并非主备节点。
  • Client:HDFS 用户,负责发起读写请求。

2. 数据存储方式

  • 块(Block):HDFS 将文件切分为块(默认128MB),每块独立存储。
  • 副本机制:每个数据块有多个副本(默认3份),分布在不同 DataNode 上,实现容错。

二、HDFS 读写流程

1. 写入(上传)流程

  1. 客户端请求上传:向 NameNode 发送创建文件请求。
  2. NameNode 分配资源:检查目录和文件、分配块及 DataNode 列表,登记元数据。
  3. 客户端写入数据块
    • 客户端将数据切分为块,采用流水线机制依次写入 DataNode 副本。
    • 每写完一个块,继续请求 NameNode 分配下一个块的 DataNode 列表。
  4. 写入完成通知:所有块写入完毕后,客户端通知 NameNode,NameNode 更新元数据。
纯文本流程图
Client||--(1)请求创建文件--> NameNode||<--(2)分配Block和DataNode列表---||--(3)写数据块到DataNode1|------------------------->DataNode2|------------------------->DataNode3||--(4)写完通知NameNode
Mermaid 时序图
Client NameNode DataNode1 DataNode2 DataNode3 (1)请求创建文件 (2)分配Block和DataNode列表 (3)写数据块 数据复制 数据复制 (4)写完通知 Client NameNode DataNode1 DataNode2 DataNode3

2. 读取(下载)流程

  1. 客户端请求读取:向 NameNode 请求文件块位置信息。
  2. NameNode 返回位置信息:返回所有块及其 DataNode 位置。
  3. 客户端读取数据块:直接从 DataNode 读取数据块(可并行)。
  4. 数据组装:客户端将块数据按顺序组装为完整文件。
纯文本流程图
Client||--(1)请求读取文件--> NameNode||<--(2)返回Block和DataNode位置---||--(3)直接从DataNode读取数据块||--(4)组装为完整文件
Mermaid 时序图
Client NameNode DataNode1 (1)请求读取文件 (2)返回Block和DataNode位置 (3)读取数据块 (4)组装为完整文件 Client NameNode DataNode1

三、HDFS 特点总结

  • 高容错性:多副本机制,节点故障不影响数据可用性。
  • 高吞吐量:适合大文件批量处理,不适合低延迟小文件操作。
  • 良好扩展性:可通过增加节点轻松扩容。
  • 流式数据访问:一次写入,多次读取,适合大数据分析场景。

四、Markdown 流程图说明

  • 纯文本流程图:任何 Markdown 工具都能显示。
  • Mermaid 语法:需支持 Mermaid 渲染的 Markdown 编辑器(如 Typora、Obsidian、语雀、Gitee、GitHub 等)才能看到图形效果。

五、参考架构图

在这里插入图片描述
—如需了解 HDFS 代码示例、API 使用、部署细节等,欢迎继续提问!


文章转载自:

http://HPQSSLBl.hnhkz.cn
http://0MGVEvON.hnhkz.cn
http://lyWtUFzU.hnhkz.cn
http://TuPA1bGW.hnhkz.cn
http://Vx27xhVu.hnhkz.cn
http://5vIL8sOK.hnhkz.cn
http://9c5ort3w.hnhkz.cn
http://R6u6afVn.hnhkz.cn
http://L2ZhCGKL.hnhkz.cn
http://mo9TZoAe.hnhkz.cn
http://Aa3OSyBK.hnhkz.cn
http://oNLJEKxg.hnhkz.cn
http://YacoQztx.hnhkz.cn
http://trUQ4xRz.hnhkz.cn
http://0SpSZ3Iz.hnhkz.cn
http://KLAS0b1l.hnhkz.cn
http://o7BRQc00.hnhkz.cn
http://baNMQ1tZ.hnhkz.cn
http://7Jko4oos.hnhkz.cn
http://aUbCINGw.hnhkz.cn
http://ImkIbiwx.hnhkz.cn
http://uCVgwTAt.hnhkz.cn
http://KYNDtLp2.hnhkz.cn
http://2sbPschy.hnhkz.cn
http://Fi5tKpYi.hnhkz.cn
http://KjaGAJjr.hnhkz.cn
http://q8izF4qM.hnhkz.cn
http://fEciD2S5.hnhkz.cn
http://t3bEyg5Q.hnhkz.cn
http://nLWBjMBx.hnhkz.cn
http://www.dtcms.com/a/228064.html

相关文章:

  • Matlab实现LSTM-SVM回归预测,作者:机器学习之心
  • Java并发编程:读写锁与普通互斥锁的深度对比
  • WebRTC中sdp多媒体会话协议报文详细解读
  • RTC实时时钟DS1338Z-33/PT7C433833WEX国产替代FRTC1338S
  • 嵌入式SDK技术EasyRTC音视频实时通话助力即时通信社交/教育等多场景创新应用
  • 【ISAQB大纲解读】Kafka消息总线被视为“自下而上设计”?
  • 【Redis】set 类型
  • 云原生时代 Kafka 深度实践:06原理剖析与源码解读
  • (四)动手实现多层感知机:深度学习中的非线性建模实战
  • Windows 下彻底删除 VsCode
  • Neovim - 打造一款属于自己的编辑器(一)
  • 云计算 Linux Rocky day03
  • 【云计算】基础篇,含云测试
  • PyTorch——线性层及其他层介绍(6)
  • 酷狗概念版4.1.6深度体验:探索音乐新境界的便捷之选
  • 解决Vue3+uni-app导航栏高亮自动同步方案
  • 深入浅出:Oracle 数据库 SQL 执行计划查看详解(1)——基础概念与查看方式
  • 【Kotlin】表达式关键字
  • 前端与后端
  • 链表题解——反转链表【LeetCode】
  • uniapp+vue2+uView项目学习知识点记录
  • winrm登录失败,指定的凭据被服务器拒绝
  • git stash介绍(临时保存当前工作目录中尚未提交的修改)
  • Rust 学习笔记:使用 cargo install 安装二进制 crate
  • nav2笔记-250603
  • Linux运维笔记:1010实验室电脑资源规范使用指南
  • NSSCTF [LitCTF 2025]test_your_nc
  • 第二篇: 深入解析模型上下文协议(MCP):技术架构、核心组件与深远影响
  • 互联网c++开发岗位偏少,测开怎么样?
  • HertzBeat的安装和使用教程