分布式文件存储是大型架构的基石,下面我重点详解分布式文件存储@mikechen
HDFS
HDFS:是大数据生态里的核心存储层,专为批处理、和海量数据存储设计。
HDFS,适合于:大数据存储与离线批处理,比如:日志、数据仓库、模型训练数据…等。
核心架构,如下图所示:
NameNode:负责元数据管理(文件目录、块位置、权限等)。
DataNode:存储实际数据块(block),定期向 NameNode 汇报心跳与块信息。
Block:文件被切分为固定大小的 block(默认 128MB),并以副本(replication)方式存储在不同 DataNode 上以实现容错。
优势
与 Hadoop 生态(YARN、Hive、Spark 等)集成紧密。
不足
对小文件不友好(太多小文件会导致 NameNode 元数据压力大)。
Ceph
Ceph 是一个分布式存储系统,目标是提供统一的对象、块与文件存储接口。
整体架构,如下图所示:
RADOS:底层可靠分布式对象存储,负责数据分布、复制/纠删码与自愈。
OSD(Object Storage Daemon):存储对象并处理数据复制、恢复、回填与 I/O。
优势
支持对象/块/文件三种接口,灵活性高(例如可为虚拟机提供块存储、为应用提供对象存储)。
无单点、自动数据分布与自我修复能力强。
不足
部署运维复杂,对运维和硬件要求较高。
延迟相对较大,不适合极端低延迟场景。
GlusterFS
GlusterFS 是一个开源的、软件定义的文件系统,它通过将现有存储服务器聚合在一起形成一个大型的、可扩展的存储池。
与 HDFS 不同,GlusterFS 没有中心化的元数据服务器,这简化了管理并消除了单点故障。
易于部署与横向扩展(新增节点后可动态扩容)。
对文件共享、NFS/CIFS 替代、媒体服务等场景友好。
但是,性能在高并发小文件读写场景下可能不足,延迟与吞吐受限于实现与网络。
FastDFS
FastDFS 是一个轻量级、高吞吐量的分布式文件系统,专为在线服务而设计,尤其适合存储小文件和海量图片。
部署与学习成本低,面向小文件、并发读多写少的 Web 场景非常高效。
轻量级:系统设计简单,部署和维护相对容易。
高并发:针对小文件的并发读写进行了优化。
可以应用于:大量小文件的互联网服务(图片、缩略图、附件)、对延迟与吞吐有要求的静态资源存储。