Jorgen's blog Jorgen's blog
首页
  • 平台架构
  • 混合式开发记录
  • 推送服务
  • 数据分析
  • 实时调度
  • 架构思想

    • 分布式
  • 编程框架工具

    • 编程语言
    • 框架
    • 开发工具
  • 数据存储与处理

    • 数据库
    • 大数据
  • 消息、缓存与搜索

    • 消息队列
    • 搜索与日志分析
  • 前端与跨端开发

    • 前端技术
    • Android
  • 系统与运维

    • 操作系统
    • 容器化与 DevOps
  • 物联网与安全

    • 通信协议
    • 安全
    • 云平台
newland
  • 关于我
  • 终身学习
  • 关于时间的感悟
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

jorgen

Love it, make mistakes, learn, keep grinding.
首页
  • 平台架构
  • 混合式开发记录
  • 推送服务
  • 数据分析
  • 实时调度
  • 架构思想

    • 分布式
  • 编程框架工具

    • 编程语言
    • 框架
    • 开发工具
  • 数据存储与处理

    • 数据库
    • 大数据
  • 消息、缓存与搜索

    • 消息队列
    • 搜索与日志分析
  • 前端与跨端开发

    • 前端技术
    • Android
  • 系统与运维

    • 操作系统
    • 容器化与 DevOps
  • 物联网与安全

    • 通信协议
    • 安全
    • 云平台
newland
  • 关于我
  • 终身学习
  • 关于时间的感悟
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 大数据入门
  • flink
  • flink第二弹
  • Flink-Config
  • Flink架构原理:深入理解分布式数据处理引擎
  • Flink API编程模型-掌握DataStream与Table API
  • Flink SQL与Table API - 结构化数据处理的新范式
  • Flink SQL与Table API - 结构化数据处理的高级接口
  • Flink Table API & SQL - 关系型数据处理在流计算中的应用
  • Flink核心API详解-掌握流处理编程模型
  • Flink核心编程模型与DataStream API实践指南
  • Flink流批统一模型-批处理是流处理的一种特殊情况
  • Flink状态管理-流处理应用的核心支柱
  • Flink状态管理与容错机制-保证流处理可靠性的核心
  • Flink状态管理与容错机制-构建可靠的数据处理管道
  • Flink状态管理与容错机制-构建可靠的流处理应用
  • Flink状态管理与容错机制
  • HDFS架构原理-大数据存储的基石
    • 前言
    • HDFS简介
    • HDFS架构
      • NameNode(名称节点)
      • DataNode(数据节点)
    • 数据存储机制
      • 块存储
      • 副本机制
      • 数据一致性
    • HDFS的优缺点
      • 优点
      • 缺点
    • HDFS在现代大数据架构中的角色
      • 传统角色
      • 现代角色
    • 结语
  • Flink性能优化与调优-构建高效流处理应用的关键
  • Flink连接器详解-无缝集成外部系统的桥梁
  • Flink部署与运维-构建稳定可靠的流处理平台
  • Flink的窗口机制与时间语义-流处理的核心支柱
  • Flink的Watermark机制-流处理中的时间控制器
  • Flink CEP详解-流数据中的复杂事件处理
  • Flink作业提交与资源管理-构建高效流处理应用的关键
  • Flink与机器学习:构建实时智能数据处理管道
  • Flink的测试与调试-构建健壮流处理应用的关键
  • Flink Exactly-Once语义实现-构建高可靠流处理应用的核心
  • Flink的监控与可观测性-构建健壮流处理系统的眼睛
  • Flink CDC入门与实践:构建实时数据同步管道
  • big_data
Jorgen
2023-11-15
目录

HDFS架构原理-大数据存储的基石

# 前言

在探索大数据世界的旅程中,我们常常被各种炫酷的框架和工具所吸引,比如Flink、Spark、Kafka等等。作为技术人员,我们总是喜欢追逐那些最新最酷的技术,却往往忽略了支撑这些技术的基础设施。

今天我想和大家聊聊大数据存储领域的"老古董"——HDFS(Hadoop Distributed File System)。虽然它看起来有些"过时",但至今仍是许多大数据架构的基石。没有HDFS,我们今天所熟知的许多大数据技术可能都不会存在。

提示

HDFS(Hadoop Distributed File System)是Apache Hadoop项目的核心组件,专为存储超大数据文件而设计,具有高容错性、高吞吐量的特点。

# HDFS简介

HDFS是一个分布式文件系统,设计用于运行在商用硬件上。它和传统的分布式文件系统有很多相似之处,但同时又有着自己独特的特点。

与传统的文件系统不同,HDFS被高度优化用于以下场景:

  • 存储超大文件(通常是GB、TB甚至PB级别)
  • 流式数据访问,而不是随机访问
  • 商用硬件上的高容错性
  • 高吞吐量,而非低延迟

# HDFS架构

HDFS采用主从架构(Master-Slave Architecture),主要由两个核心组件组成:

# NameNode(名称节点)

NameNode是HDFS的大脑,负责管理文件系统的命名空间和客户端对文件的访问。

  • 功能:

    • 维护文件系统的树状目录结构
    • 管理文件块与DataNode之间的映射关系
    • 处理客户端的读写请求
    • 执行文件系统的操作(如创建、删除、重命名文件等)
  • 特点:

    • 存储在内存中,确保快速访问
    • 通常配置高可用性(HA)模式,避免单点故障
    • 不存储实际数据,只存储元数据

# DataNode(数据节点)

DataNode是HDFS的肌肉,负责实际存储数据。

  • 功能:

    • 存储实际的数据块
    • 根据NameNode的指令创建、删除和复制数据块
    • 定期向NameNode发送心跳和块报告
    • 执行数据块的读写操作
  • 特点:

    • 通常一个集群中有多个DataNode
    • 数据被分割成固定大小的块(默认128MB)
    • 每个块默认有3个副本,存储在不同的DataNode上

# 数据存储机制

HDFS的数据存储机制是其核心优势所在,主要体现在以下几个方面:

# 块存储

与传统的文件系统不同,HDFS将文件分割成固定大小的块(默认128MB),而不是按字节存储。

  • 大块的优势:
    • 减少寻址时间:大块意味着更少的块,更少的寻址操作
    • 提高吞吐量:顺序读写大块数据比随机读写小数据更高效
    • 简化存储管理:所有块大小相同,便于管理

# 副本机制

为了提高数据可靠性和可用性,HDFS为每个数据块创建多个副本(默认3个)。

  • 副本放置策略:
    • 第一个副本:放置在客户端所在的DataNode
    • 第二个副本:放置在与第一个副本不同机架的DataNode
    • 第三个副本:放置在与第二个副本相同机架的不同DataNode

这种策略既保证了数据的可靠性(不同机架防止单机架故障),又保证了数据的读取效率(同机架内读取)。

# 数据一致性

HDFS采用"一次写入,多次读取"的模型,这意味着:

  • 文件一旦创建、写入和关闭,就不需要再修改
  • 不支持文件的随机修改,只支持追加操作
  • 简化了数据一致性问题,提高了系统性能

# HDFS的优缺点

# 优点

  1. 高容错性:数据多副本存储,部分节点故障不会导致数据丢失
  2. 高吞吐量:优化为流式数据访问,适合大数据批处理
  3. 适合存储大文件:专为存储超大文件而设计
  4. 商用硬件:可以在普通硬件上运行,降低成本
  5. 简单一致性模型:一次写入,多次读取,简化了系统设计

# 缺点

  1. 不适合低延迟访问:不适合需要快速响应的应用场景
  2. 不适合小文件:每个文件都需要存储元数据,大量小文件会消耗NameNode资源
  3. 不支持随机修改:只能追加,不能随机修改文件内容
  4. 不适合多用户写入:不适合多个用户同时修改同一文件的场景

# HDFS在现代大数据架构中的角色

随着大数据技术的发展,HDFS的角色也在不断演变:

# 传统角色

在Hadoop生态系统的早期,HDFS是大数据存储的唯一选择,承担着存储和处理的双重角色。

# 现代角色

在现代大数据架构中,HDFS的角色更加聚焦:

  1. 数据湖存储:作为企业数据湖的底层存储,存储各种原始数据
  2. 批处理数据源:为Spark、MapReduce等批处理框架提供数据
  3. 长期存储:存储需要长期保留的历史数据
  4. 备份与归档:作为其他存储系统的备份和归档解决方案

# 结语

回顾HDFS的发展历程,从最初作为Hadoop的一部分,到现在成为许多大数据架构的基石,它证明了好的基础设计比追逐最新技术更重要。

虽然现在有许多新兴的存储技术不断涌现,但HDFS凭借其简单、可靠、高效的特性,仍然在大数据领域占据着重要地位。了解HDFS的原理,不仅有助于我们更好地理解大数据技术栈,也能让我们在设计自己的数据架构时做出更明智的选择。

正如建筑需要坚实的地基,大数据架构同样需要可靠的存储基础。HDFS就是大数据世界中的"钢筋混凝土",虽然不起眼,但却不可或缺。


本文是big_data系列文章的一部分,后续我们将继续探讨更多大数据技术。如果你对HDFS的实际应用感兴趣,欢迎在评论区分享你的经验!

#HDFS#Hadoop#大数据存储
上次更新: 2026/01/28, 10:42:53
Flink状态管理与容错机制
Flink性能优化与调优-构建高效流处理应用的关键

← Flink状态管理与容错机制 Flink性能优化与调优-构建高效流处理应用的关键→

最近更新
01
LLM
01-30
02
intro
01-30
03
intro
01-30
更多文章>
Theme by Vdoing | Copyright © 2019-2026 Jorgen | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式