Google File System 论文解读

1 简介
    GFS特点:首先,组件失效被认为是常态事件;其次,文件巨大;第三,文件修改多是尾部追回数据;第四,应用程序和文件系统API协同提高灵活性。

2 设计概述
    2.1 设计预期
        大量廉价组成,数量巨大的文件,大规模流式读取和小规模随机读取,高效的、行为定义明确的实现多客户端并行追回数据到一个文件里。
    2.2 接口
        类似传统文件系统的API,另外提供了快照和记录追加操作。
    2.3 架构
        一个集群包括一个单独的Master节点,多台Chunk服务器,同时被多个客户羰访问。Master节点管理所有的文件系统元数据和系统范围内的活动;
    2.4 单一Master节点
    2.5 Chunk尺寸
        64MB,远大于传统文件,优点:减少客户羰和Master节点通讯的需求,显著降低我们的工作负载来说效果;其次减少网络负载;第三减少Master节点要保存的元数据量 。惰性空间分配策略避免内部碎片。
    2.6 元数据 
        文件和Chunk的命名空间、文件和Chunk的对应关系、Chunk副本的存放地点。
        元数据保存在内存中
        操作日志到一定量时会对系统状态做一次Checkpoint,创建新的Checkpoint文件,包括旧的日志文件,旧的Checkpoint文件可以被删除。
    2.7 一致性模型 
        宽松的一致性模型
        所有客户端,无论哪个副本读取,内容都是一样,则认为文件region是一致的;
        如修改之后,region是一致的且客户端能够看到写入操作全部的内容,则这个region是已定义的;
        并行修改操作成功完成后,region处于一致的、未定义的状态。(所有客户端看到同样的数据,但无法读到任何一次写入操作的数据)
        数据操作:写入、追加两种。
        写入:把数据写在应用程序指定的文件偏移位置上。
        追加:


3 系统交互
    3.1 租约和变更顺序
        Master节点为Chunk的一个副本建立一个租约,这个副本叫主Chunk,主Chunk对Chunk的所有更改操作进行序列化。

    3.2 数据流
        数据流和控制流分开。基于TCPl连接的,管理式数据推送方式来最小化延迟。
    3.3 原子的记录追加

    3.4 快照 

4 Master节点的操作
    Master 节点执行所有的名称空间操作。此外,它还管理着整个系统里所有 Chunk 的副本:它决定 Chunk 的存储位置,创建新 Chunk 和它的副本,协调各种各样的系统活动以保证 Chunk 被完全复制,在所有的 Chunk 服务器之间的进行负载均衡,回收不再使用的存储空间。本节我们讨论上述的主题。

    4.1 名称空间管理和锁
    4.2 副本的位置
        原则:最大化数据可靠性和可用性,最大化网络带宽利用率。
    4.3 创建 重新复制 重新负载均衡 
        创建时选择副本的位置,选择副本:低于平均硬盘使用率、限制每个Chunk服务器上最近的Chunk的创建操作的次数、分布在多个机架之间。
        Master选择优先级最高的Chunk,然后命某个Chunk服务器从可用的副本拷贝出一个副本。
        Master服务器周期性地对副本进行重新负载均衡:它检查当前的副本分布情况,然后移动副本以便更好的利用硬盘空间、更有效的进行负载均衡
    4.4 垃圾回收
        采用惰性的策略,只在文件和Chunk级的常规垃圾收集时进行。
    4.5 过期失效的副本检测 
        Chunk服务器重新启动,并且向Master节点报告它拥有的Chunk的集合以及相应的版本号的时候,就会检测出它包含过期的Chunk,在例行的垃圾回收过程中移除所有的过期失效副本。
5 容错和诊断
    5.1 高可用性
        快速恢复和复制。
        Chunk复制到不同机架上,通过Chksum检验检查已损坏的数据,Master节通过克隆已的副本保证。
    5.2 数据的完整性
    5.3 诊断工具
6 度量
    6.1 小规模基准测试
    6.2 实际应用中的集群
    6.3 工作负荷分析

7 经验
8 相关工作
9 结束语
10 致谢
11 参考 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章