Google GFS 文件系统,一个面向大规模数据密集型应用的、可伸缩的分布式文件系统。GFS由一个master和大量的chunkserver构成。绝大部分文件的修改是采用在文件尾部追加数据,而不是覆盖原有数据的方式系统由许多廉价的普通组件组成,组件失效是一种常态。系统必须持续监控自身的状态,它必须将组件失效作为一种常态,能够迅速地侦测、冗余并恢复失效的组件。
系统的工作负载主要由两种读操作组成:大规模的流式读取和小规模的随机读取。系统的工作负载还包括许多大规模的、顺序的、数据追加方式的写操作。我们的文件通常被用于“生产者-消费者”队列,或者其它多路文件合并操作。通常会有数百个生产者,每个生产者进程运行在一台机器上,同时对一个文件进行追加操作。GFS 提供了一套类似传统文件系统的 API 接口函数,文件以分层目录的形式组织,用路径名来标识。GFS 存储的文件都被分割成固定大小的 Chunk。Master 节点管理所有的文件系统元数据。GFS 客户端代码以库的形式被链接到客户程序里。无论是客户端还是 Chunk 服务器都不需要缓存文件数据。文件命名空间的修改(例如,文件创建)是原子性的。它们仅由 Master 节点的控制:命名空间锁提供了原子性和正确性的保障;Master 节点的操作日志定义了这些操作在全局的顺序。在设计这个系统时,一个重要的原则是最小化所有操作和 Master 节点的交互。
Google 文件系统展示了一个使用普通硬件支持大规模数据处理的系统的特质。虽然一些设计要点都是针
对我们的特殊的需要定制的,但是还是有很多特性适用于类似规模的和成本的数据处理任务。设计保证了在有大量的并发读写操作时能够提供很高的合计吞吐量。我们通过分离控制流和数据流来实现这个目标,控制流在 Master 服务器处理,而数据流在 Chunk 服务器和客户端处理。当一般的操作涉及到 Master 服务器时,由于 GFS 选择的 Chunk 尺寸较大(alex 注:从而减小了元数据的大小),以及通过 ChunkLease 将控制权限移交给主副本,这些措施将 Master 服务器的负担降到最低。这使得一个简单、中心的 Master不会成为成为瓶颈。我们相信我们对网络协议栈的优化可以提升当前对于每客户端的写入吞吐量限制。
简介Google File System
最新推荐文章于 2024-05-23 21:59:25 发布