众所周知,Hadoop的存储基础,HDFS分布式文件系统,是按照GFS的思想实现的。
本文参考:Google File System 中文版 1.0 版 译者 alex,原文地址 http://blademaster.ixiezi.com/
GFS是面向大规模数据密集型应用的,可伸缩的分布式文件系统。
1. 重要设计思路
- 组件失效被认为是常态而不是突发事件,高度强调灾备和自动恢复
- 按照文件非常巨大的方向设计
- 绝大部分修改是在文件尾部追加,而不是覆盖原有数据:文件写完之后对文件最多的操作是读取,客户端无需缓存数据块,通过数据追加来优化性能和保证原子性
- 应用程序和文件系统API的协同设计提高系统灵活性。e.g. 通过原子性的记录追加的引入.放松GFS对一致性模型的要求
2. 设计概述
2.1 设计预期
对于小文件随机读取的解决方式:通常做法是把小规模的随机读取操作合并并排序,之后按照顺序批量读取,这样可以避免在文件中前后来回读取位置
高性能带宽比低延迟重要,我们要求高速数据交换,不要求响应时间
这一特性在做数据分析的时候没有问题,但是对于要求相应时间的工作上,后来又提出了许多解决方案,但并没有实质上改变这一设计初衷
2.2 接口
GFS提供了一套类似传统文件系统的API接口,虽然并不是严格按照POSIX(The Portable Operating System Interface)等标准实现的。
- 快照:快照以很低的成本创建一个文件或者目