Google技术知多少

Google技术知多少

posted by Andrew(justastriver@gmail.com)

google技术都具有标杆作用,也是体现了目前互联网各个技术的最高水平,其论文更是开源界的参考依据。下面从文件系统,分布式存储及高性能计算方面总结一下google的各大技术。

文件系统

GFS即Google File System,是google的分布式文件系统。GFS采用主从模式,主要分为主控服务器,数据服务器和GFS客户端三部分。主控服务器负责所有数据服务器的检索/查询,提供管理服务;数据服务器是实际的数据存储服务器,以chunk为单位;GFS客户端提供应用程序操作GFS的接口API。整体架构如图1所示。


图1 GFS整体架构(图来源于百度百科)

从图1可以看出,应用程序读写数据流程如下:

  1. 客户端将应用程序提供的读写位置和大小转换成chunk index,同时将文件名file name一并发送给master请求读写
  2. master根据上述提供的信息,查询chunk index与chunkserver的映射表,得到应该读写的chunkserver服务器地址
  3. 客户端根据master返回的地址,直接与chunkserver进行交互
在GFS中,chunkserver定时会与master进行通信,确认心跳。新增机器或者某台chunkserver挂掉,master服务能够及时发现并调整索引信息。在GFS chunkserver内部以chunk为单位,一个chunk为64Mb,读写时的物理最小单位为block,block为64kb。写时将写入多分备份数据防止数据丢失并提供系统可用性,一般包含一个主备份和2个从备份,这些信息都由master进行维护,master还负责负载均衡以及一些垃圾回收工作。

分布式存储

Google分布式存储技术bigtable及megastore都属于建立在GFS基础之上的nosql技术,nosql与关系数据库最大的不同是在nosql提供更加自由的数据存储方式(schema free模式自由)。

  •  Bigtable

Fay Change,Jeffrey Dean, Sanjay Ghemawat等人设计开发了bigtable分布式存储系统,开源界有Hbase对应,同时,Jeffrey和Sanjay推出了开源数据存储levelDB,其功能特点与bigtable非常类似。

Bigtable将数据存放在sstable和memtable中,前者为磁盘文件,后者为内存数据。bigtable在接收到写入操作时,首先将命令写入到log文件,再往memtable中写入,如果memtable已经满,则会自动merge到sstable中,merge过程分为:minor,major,full三种。minor指将memtable合并成一个新的sstable;major指将memtable与部分sstable合并成新的sstable;full则指将memtable与全部sstable进行合并,将已经标记为删除的记录删除掉,是比较耗时的但能减小存储空间。在levelDB中有两种合并方式:minor和major,minor基本相同,在major方式中,levelDB按照相同的level内部进行合并。sstable,memtable及log如图2所示。


图2 Bigtable结构图

Bigtable的整体结构与GFS类似,可以分为主控服务器master,子表服务器tablet和客户端client。管理数据使用chubby系统和元数据表(Meta Table)共同维护系统数据的管理。Meta Table记录了具体某个子表存储在哪个子表服务器上,它也被切割成多份存储在不同的子表服务器上。被切割的第一个子表被称为root tablet,根据root tablet可以找到完整的meta table,除了root tablet的其他元数据子表存储了子表服务器的信息,这样的三层结构查询可以定位到具体的子表,如图3所示。



图3 bigtable的三层查询结构

  • Megastore

MegaStore最大的特点是提供了实体内的强一致性,实体间的弱一致性。对于大数据的存储,bigtable提供高可用性,但只能提供弱一致性,为了提供跨行一致性,google研发了MegaStore,既能提供nosql的高可用性,又能吸收关系数据库的一致性。其基本思路是将大规模数据进行细粒度切分,切分的若干实体内部提供满足ACID语义的强一致性服务,实体间提供相对弱的一致性服务,从而使用了折中的办法。如图4所示。



图4 Megastore 实体切分及强弱一致性支持示意图

实体之间的通信使用消息队列,如图5所示。由于实体间可以被定义有很多共性,大部分数据操作发生在实体内部,通信开销不大,如果需要跨实体间通信,则使用two-phase提交方式保证通信及同步。


图5 实体间通信通过消息队列


高性能计算

  • MapReduce

MapReduce是Google高性能计算基础,开源界hadoop就是其效仿者。MapReduce正如其名,计算模型中包含两个步骤:map和reduce。map过程是将原始数据通过某种策略分发到不同的节点进行计算,这些节点之间的计算相互独立互不影响;reduce过程则是将各个节点的计算结果进行收集整理和汇总,输出最终结果。由于整个过程可以高效地利用计算机的处理能力,达到处理大数据量计算的目的。处理过程如图6所示。


图6 map reduce计算过程示例

  • Pecolator(caffeine)

咖啡因计划是google提出的又一大技术。其目的为了提高数据实时性处理能力,尤其是数据实时增量更新能力。它是Mapreduce的一个补充。“Percolator的设计原理其中之一在于提供一个能够随机访问的文件库,并单独进行处理,以替代MapReduce的全局式处理方式”,Daniel Peng在论文中写道,“快照隔离——这是Percolator的设计核心,其目的在于提供cross-row、cross-table、ACID兼容性等数据交换。”

  • Pregel

Pregel是一个用于分布式图计算的计算框架,主要用于图遍历(BFS)、最短路径(SSSP)、PageRank计算等等
在Pregel计算模型中,输入是一个有向图,该有向图的每一个顶点都有一个相应的由String描述的顶点标识符。每一个顶点都有一个与之对应的可修改的用户自定义值。每一条有向边都和其源顶点关联,并且也拥有一个可修改的用户自定义值,并同时还记录了其目标顶点的标识符。一个典型的Pregel计算过程如下:读取输入初始化该图,当图被初始化好后,运行一系列的超级步直到整个计算结束,这些超级步之间通过一些全局的同步点分隔,输出结果结束计算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值