大数据基础笔记:GFS(1)

222 阅读2分钟

1.对比文件系统,GFS是什么?

GFS设计思路与Linux/Unix文件系统类似:

信息Linux/UnixGFS
文件/目录信息(metadata)存放到文件系统固定的磁盘分区master server
数据信息按索引指定的磁盘块chunk server
分块大小Block size,例如 4096Bytes64M
读写文件读写 (单机)分布式请求(RPC)
错误磁盘文件块损坏master 宕机,数据一致性问题
性能IO瓶颈硬件(IO/网络等)

GFS的架构.png

2.设计问题的思考

2.1 master 单点

对于单点,通常的思路是主备切换,比如选举。同时,需要通过健康检测查看 master 状态。

2.2 master 性能

master 性能瓶颈主要是硬件(IO/网络等),解决IO问题可以把数据放在内存中,同时还需要提供一套机制,避免宕机重启造成的内存数据丢失,比如序列化机制。

网络问题,主要考虑带宽与网络吞吐。

2.3 数据一致性

GFS 通过3个副本(replica)在不同的 chunk server 上存储,类似 RAID 的机制保证数据的可靠性。

3. 小结

可以看到 GFS 在这个版本(2003年)更多的是从工程性的角度来考虑,解决“如何把互联网上的网页存储下来”这个问题。

背后的需求,网页存储丢失(最终输入到PageRank算法)是允许部分页面丢失的这种情况,所以从工程的角度并不需要做到非常高的可用性与一致性。相比现在的电商或者支付系统来说,不用很高。

另外,在当时的条件下,普通PC+Linux的吞吐能力比网络带宽要好一些。从工程角度,更多地考虑是突破网络的瓶颈,充分压榨服务器资源。