快捷搜索: 王者荣耀 脱发

Google分布式系统三大论文解析

GFS

    定义 结构 功能 问题

定义 Google文件系统,是基于中心化处理的文件系统,基于普通磁盘就能处理大规模数据分析的经典实现

结构

概念 解释 client 应用调用端 master 集群管理服务,存储元数据,负责chunk信息管理,复制、迁移,一般是主备的策略,默认三个结点 chunkServer 文件存储服务,以Linux文件形式存储,文件被分为多个chunk,每个chunk有一定副本数

功能

    支持高并发读写、高吞吐量

采用写日志文件的方式,实现“生产者-消费者”的队列模式,可并发追加日志与消费日志。并发追加带来线程同步的问题,GFS是采取对目录空间的每个结点设置读写锁的方式,来支持同一结点下并发写入与访问 文件路径采用“前缀压缩”算法,以极低的空间占用装载进master的整个内存空间,同时提供极高的查找效率。

    中心化处理的文件系统

简化了对chunkServer的管理,GFS为避免master成为流量瓶颈,做了以下工作: 第一,控制流、数据流分离,参考上图,若client需要获取文件,先尝试与master沟通;master与chunkServer沟通,找到文件具体地址后返回给client;client最后与chunkServer做实际的数据流交互。 第二,增大chunk的size,大小设为64M,远远大于读取内存页的大小,这一操作缩小了在master上存储元数据的总量,也降低了client请求master的频率,据估算,64byte的元数据可以记录64M chunk的信息。

    高度容错

文件损坏检查及chunk的副本过期检测。前者基于chunksum的校验,后者基于版本号的比对

    垃圾回收

采用COW 即写时拷贝技术,增加引用计数,若不能被chunkServer识别的chunk 就是无效文件,可以被批量作业延时回收,延时策略可避免误删,方便回滚,但是占用机器的空间。

问题

    COW写时复制 前缀压缩算法 惰性空间分配 master有点像索引文件,chunkServer是具体数据文件。可以类比mysql么
经验分享 程序员 微信小程序 职场和发展