作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维
371篇原创内容
公众号
图片中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:
Web服务器
代理服务器
ZooKeeper
Kafka
RabbitMQ
Hadoop HDFS(本章节)
上个小节我们介绍Hadoop生态的核心软件以及其他相关辅助软件,从本小节开始我们就来介绍其中普通运维最容易接触到的软件:HDFS。
HDFS(Hadoop Distributed File System)是 Hadoop 的核心分布式文件存储系统,专为海量数据(TB/PB级)的可靠、高吞吐量访问而设计。它遵循“一次写入、多次读取”(Write Once, Read Many, WORM)模型,适合离线批处理分析场景。
一、核心设计目标与假设处理硬件故障: 硬件故障(节点、磁盘、网络)是常态而非异常。HDFS 通过自动检测和快速恢复实现高容错性。流式数据访问: 优化高吞吐量的顺序数据读写(适合批处理),而非低延迟的随机访问(如传统数据库)。大数据集: 存储超大文件(TB,PB级别),支持百万级文件数量。简单一致性模型: 文件一旦创建、写入并关闭,内容就不可更改(只能追加或重写整个文件)。这简化了数据一致性问题。移动计算优于移动数据: 将计算任务(如 MapReduce)调度到存储数据的节点附近执行,减少网络传输开销。跨异构硬件可移植性: 可在普通商用硬件上运行。二、核心架构(主从 Master/Slave)HDFS 由两类关键守护进程(Daemon)组成:
NameNode (NN) - Master(文件系统的“大脑”,管理元数据)FsImage:文件系统命名空间和块映射的持久化检查点(Checkpoint),存储在磁盘上。EditLog:记录所有对文件系统元数据的修改操作(事务日志),也存储在磁盘上。管理文件系统的命名空间(Namespace):文件/目录的层次结构、属性(权限、所有者、修改时间)。管理文件到数据块(Block)的映射:每个文件被分割成一个或多个数据块(Block)。管理数据块到 DataNode 的映射:知道每个数据块及其副本存储在集群中的哪些 DataNode 上。协调客户端对文件系统的访问(打开、关闭、重命名文件/目录)。执行数据块管理操作:创建、删除、复制、负载均衡。接收 DataNode 的心跳(Heartbeat)和块报告(Blockreport)。
DataNode (DN) - Slave(实际存储数据块的节点)在本地文件系统上存储和检索实际的数据块。根据 NameNode 或客户端的指令创建、删除和复制数据块。定期(默认 3 秒)向 NameNode 发送心跳,报告自身存活状态。定期(默认 6 小时或配置时间间隔)向 NameNode 发送块报告,列出本节点存储的所有数据块信息。处理来自客户端或其他 DataNode 的数据读写请求。