Hadoop HDFS-基本介绍

57 阅读3分钟

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:

Web服务器

代理服务器

ZooKeeper

Kafka

RabbitMQ

Hadoop HDFS(本章节)

上个小节我们介绍Hadoop生态的核心软件以及其他相关辅助软件,从本小节开始我们就来介绍其中普通运维最容易接触到的软件:HDFS。

HDFS(Hadoop Distributed File System)是 Hadoop 的核心分布式文件存储系统,专为海量数据(TB/PB级)可靠、高吞吐量访问而设计。它遵循“一次写入、多次读取”(Write Once, Read Many, WORM)模型,适合离线批处理分析场景。

一、核心设计目标与假设

  1. 处理硬件故障: 硬件故障(节点、磁盘、网络)是常态而非异常。HDFS 通过自动检测和快速恢复实现高容错性

  2. 流式数据访问: 优化高吞吐量的顺序数据读写(适合批处理),而非低延迟的随机访问(如传统数据库)。

  3. 大数据集: 存储超大文件(TB,PB级别),支持百万级文件数量。

  4. 简单一致性模型: 文件一旦创建、写入并关闭,内容就不可更改(只能追加或重写整个文件)。这简化了数据一致性问题。

  5. 移动计算优于移动数据: 将计算任务(如 MapReduce)调度到存储数据的节点附近执行,减少网络传输开销。

  6. 跨异构硬件可移植性: 可在普通商用硬件上运行。

二、核心架构(主从 Master/Slave)

HDFS 由两类关键守护进程(Daemon)组成:

  1. **NameNode (NN) - Master(**文件系统的“大脑”,管理元数据)
  • FsImage:文件系统命名空间和块映射的持久化检查点(Checkpoint),存储在磁盘上。

  • EditLog:记录所有对文件系统元数据的修改操作(事务日志),也存储在磁盘上。

  • 管理文件系统的命名空间(Namespace):文件/目录的层次结构、属性(权限、所有者、修改时间)。

  • 管理文件到数据块(Block)的映射:每个文件被分割成一个或多个数据块(Block)。

  • 管理数据块到 DataNode 的映射:知道每个数据块及其副本存储在集群中的哪些 DataNode 上。

  • 协调客户端对文件系统的访问(打开、关闭、重命名文件/目录)。

  • 执行数据块管理操作:创建、删除、复制、负载均衡。

  • 接收 DataNode 的心跳(Heartbeat)和块报告(Blockreport)。

  1. DataNode (DN) - Slave(实际存储数据块的节点)
  • 在本地文件系统上存储和检索实际的数据块

  • 根据 NameNode 或客户端的指令创建、删除和复制数据块

  • 定期(默认 3 秒)向 NameNode 发送心跳,报告自身存活状态。

  • 定期(默认 6 小时或配置时间间隔)向 NameNode 发送块报告,列出本节点存储的所有数据块信息。

  • 处理来自客户端或其他 DataNode 的数据读写请求

当然这里只介绍最核心的2个组件,实际还有其他组件,我们后面也会单独做介绍。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。