读Google Bigtable之感悟
之前对ApacheHadoop的一系列产品有所研究,追根溯源,在拜读了Google的三篇经典论文之后,自己对衍生自Google这几篇论文的Hadoop家族的产品有了更加深刻的认识。
这篇博客是对GoogleBigtable这篇论文的读后感,因水平有限,本文只是作为自己学习的小结,文中有不妥之处,还请批评指正。
1摘要:
Bigtable是一个分布式的结构化数据存储系统,在Hadoop中是以HBase来实现同样的功能。这两个存储系统其设计都是针对海量数据(通常是分布在数千台普通服务器的PB级的数据)处理的。HBase是一个高可靠的列式数据存储系统。
目前Google的很多项目都使用Bigtable存储数据,包括Web索引,GoogleEarth,Google Finance。
2介绍:
Google用了两年半的时间来设计,并实现和部署了一个分布式的结构化数据存储系统——Bigtable。
设计目的:(1)可靠的处理PB级别的数据;(2)能够部署到千万台机器上。
应用:在超过60个Google的产品和项目上得到了应用。(1)在需求上:这些产品对于Bigtable提出了不同的需求,有的需要高吞吐量的批处理,有的则需要及时响应,快速返回数据给最终的用户。(2)在集群配置上:有的集群只需要几台服务器,有的则需要上千台服务器,存储几百TB的数据。
Bigtable使用了很多数据库的实现策略,与数据库很类似但是也有很多不同:
(1) Bigtable提供了和并行数据库和内存数据库完全不同的接口;
(2) Bigtable不支持完整的关系数据模型,但是它为客户提供了简单的数据模型,利用这个模型,客户可以动态控制数据的分布和格式,用户也可以自己推测低层存储数据的位置相关性。
(3) Bigtable将存储的数据都视为字符串,但是Bigtable本身不去解析这些字符串。数据的下标是行和列的名字,名字可以是任意的字符串。
(4) 客户程序通常会把各种结构化或者半结构化的数据串行化到这些字符串里。
3数据模型:
Bigtable是一个稀疏的,分布式的,持久化存储的多维度排序Map5。
3.1行
表中的行关键字可以是任意的字符(目前支持最大64KB的字符串)。
对同一个行关键字的读或者写操作都是原子的。
Bigtable通过行关键字的字典顺序来组织数据。表中的每一个行都可以动态分区。每个分区叫做一个