Tag Archives: BigTable

重读Google老三篇

  昨晚会议结束得太晚,没赶上末班地铁,只好打车回家,俺的银子呀wuwu~

  最近在读文献。上周过了几篇蛋白基因组学(proteogenomics)的天书,实在抓狂。这周的主题回到软件领域:大规模分布式计算。昨晚是Google老三篇(GFSMapReduceBigTable)的文献讲评,瓶子哥顺便讲了讲Google Cluster,我又带了几句Chubby论文。讨论很热烈,结果就说多了。

  我负责主讲BigTable,这次细读,发现以前读的时候忽略了很多细节。

  比如,BigTable使用bloom filter算法进行元数据cache加速。bloom filter有单边特性(它说不存在的,必然不存在;它说存在的,也许有小概率错误),这的确最适合cache这种场合。

  再如,google的分布式锁服务Chubby,在GFS和BigTable中都起到关键作用。在同步控制方面,GFS和BigTable设计思路几乎一致,都是用Chubby对master节点的元数据条目加锁,但具体数据服务节点(GFS叫chunk seriver,而bigtable叫tablet server)的同步正确性,需要客户端自己来保证。这样设计的目的很明确:尽可能保证全局服务的简洁高效,防止master节点成为瓶颈,这对大规模的分布式场景是非常重要的;当然,副作用就是客户端程序的要求更高。

  BigTable的一个重要应用是Google Analytics。另外进展很快的个性化搜索也用BT来存储用户历史和参数。之前发布的Google App Engine的python存储API,有很明显的BigTable痕迹。

  身边已经开始有人从Amazon和Google租用云计算能力了,新概念被接受的速度超出我的想象。

Bigtable论文

  Google labs里刚贴出了Bigtable的论文:Bigtable: A Distributed Storage System for Structured Data。立刻引起很多讨论。很关注这个话题。在Blog发表了不少与此有关的讨论,搜索了一下,感觉这些观察和思考是有连续性的。把它们都列出来:

  最近会看看Google Map卫星地图上的中关村,所有标志性建筑都清晰可见,也能找到我住的小区单元楼和工作的大厦。原来每天就活在这么一个格子里。

BigTable和生物信息

  以前提到过,GFS分布并行、高度容错、海量I/O、“重”插入查询“轻”删除、面向廉价PC集群的特点,很适合生物信息方面的应用

  最近构建在GFS基础上的BigTable受到关注。简单地说,BigTable提供稀疏表形式的数据存取服务,除了拥有GFS的原有特点,更适合存放半结构化的数据。所谓半结构化数据,和关系数据 库的表一样是二维的,有字段(列)和记录(行)的概念,但每个字段不限制长度,适于存储HTML和RSS(XML)。而生物信息应用中,肽、质谱、酶、修 饰等都是由一组或多组不定长字符串表达的半结构化数据。

  Google进军生物信息领域,看似隔行,其实门槛很低,因为原有核心竞争力在此领域同样有效。