分布式文件存储是大型架构的基石,下面我重点详解分布式文件存储@mikechen
HDFS
HDFS 是 Apache Hadoop 项目的核心组件之一,专为大数据批处理而设计。
HDFS 采用主从(Master/Slave)架构,如下图所示:
NameNode(主节点): 负责管理文件系统的元数据(metadata)。
例如:文件目录结构、文件与数据块…等等,它不存储实际数据。
DataNode(从节点): 负责存储实际的数据块,数据会被切分成固定大小(通常为 128MB 或 256MB)的数据块。
优点:
高吞吐:适合大文件的顺序读写。
Hadoop 生态紧密结合(MapReduce、Hive、Spark 等)。
缺点:
不支持低延迟访问(比如随机小文件读写性能差)。
不适合小文件存储(元数据过载)。
应用场景
大数据处理平台(离线计算、日志存储)。
CephFS
Ceph 的分布式文件系统组件,采用 CRUSH 算法进行数据分布。
Ceph 的核心是 CRUSH 算法,它通过哈希计算和映射,将数据对象动态、均匀地分布在集群中的所有存储设备上,实现了高度的去中心化。
OSD (Object Storage Device): 存储数据对象,每个 OSD 通常对应一个物理硬盘。
Monitor: 负责维护集群的状态信息和元数据。
MDS (Metadata Server): 专门负责管理 CephFS 的文件元数据。
工作流程: 客户端与 MDS 交互获取元数据,然后直接与 OSD 交互进行数据读写。
应用场景:云计算(OpenStack 的默认存储 backend)。
GFS
GFS,Google 提出的分布式文件系统,HDFS 的灵感来源。
整体架构,如下图所示:
GFS 同样采用主从(Master/Slave)架构,原理与 HDFS 非常相似。
Master(主节点): 负责管理元数据,包括文件命名空间、访问控制和数据块位置信息。
Chunkserver(从节点): 负责存储实际数据块(称为 Chunk),每个 Chunk 通常为 64MB。每个 Chunk 也有多副本。
工作流程: 客户端先与 Master 交互获取元数据,然后直接与 Chunkserver 进行数据读写。
TFS
TFS 是淘宝自主研发的分布式文件系统,专为淘宝海量的图片、商品、交易等小文件存储而设计。
TFS 同样采用主从(Master/Slave)架构,但其设计核心是针对小文件进行优化。
特别适合:商品图片、用户头像、短视频、文档…等场景。