跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

HDFS分布式文件系统,如何高效存储海量数据?

什么是 HDFS?

HDFS(Hadoop Distributed File System)是专为大规模数据存储而设计的分布式文件系统。它具有高度可扩展性,能够在大量普通低成本机器上运行,并通过内置的容错机制为用户提供高性能的文件存储服务。

HDFS 的核心优势

  • 高容错性:数据自动保存多个副本,确保数据持久性和可用性。
  • 适合批量处理:遵循“移动计算而非数据”的理念,有效减少数据传输开销。
  • 支持超大规模数据:可处理 TB 甚至 PB 级别数据,支持百万规模以上的文件数量。
  • 流式文件访问:采用“一次写入、多次读取”模型,非常适合数据批量写入和顺序读取的场景。
  • 低成本高可靠:通过多副本机制在廉价硬件上实现高可靠性。

HDFS 的局限性

  • 不适合低延迟访问:为达到高吞吐率而牺牲了低延迟特性。
  • 小文件存储效率低:大量小文件会占用 NameNode 大量内存,并且磁盘寻道时间远超过数据传输时间。
  • 不支持并发写入和随机修改:一个文件同时只能有一个写入器,且仅支持追加写入。

HDFS 的设计思想

HDFS 将文件切分为固定大小的数据块(默认 128MB)并在分布式集群中打散存储。这种设计与 RAID 的条带化理念相似,通过多磁盘并行操作提升整体 I/O 性能。

HDFS 的架构解析

基础架构

NameNode (NN)

NameNode 作为核心控制单元,管理文件系统的元数据。为了追求高性能,所有元数据更改首先追加到 Editlog 文件,而不是直接修改 FsImage 元数据镜像文件。

Secondary NameNode (SNN)

SNN 是 NameNode 的辅助节点,通过定期检查点机制进行容灾。其核心工作是合并编辑日志,生成新的元数据快照,防止 EditLog 过大并加速 NameNode 重启。

HDFS 读写流程详解

写入流程

客户端请求写入:向 NameNode 申请写入权限。创建数据管道:NameNode 根据机架感知策略返回 DataNode 列表。建立连接:客户端与 DataNode 管道建立连接。流水线复制:数据以包为单位流式传输,每个节点存储后立即转发。确认回执:通过反向管道发送成功确认。完成写入:所有块写入后,客户端通知 NameNode 提交元数据。

读取流程

客户端请求读取:从 NameNode 获取文件块信息和位置。直接连接 DataNode:客户端选择最近节点建立直接连接。流式读取:以数据包形式持续读取数据。故障转移:如遇连接中断,自动切换至其他副本。顺序读取:依次读取所有数据块。关闭连接:完成读取后关闭所有连接。

预告后续内容:Yarn、Hive、ZooKeeper、HBase。如有问题或建议,欢迎在评论区中留言~

——

本文由 websoft网络软件专家(www.phpwebsoft.com)资深编辑陈景序整理,更多技术文章和教程,请关注我们的网站。

相关文章