`

Google的BigTable原理

阅读更多

官方的 Google Reader blog 中有对BigTable 的解释。

这是Google 内部开发的一个用来处理大数据量的系统。这种系统适合处理半结构化的数据比如 RSS 数据源。

 

以下发言 是 Andrew Hitchcock 在 2005 年10月18号 基于:Google 的工程师 Jeff Dean 在华盛顿大学的一次谈话 (Creative Commons License).

 

首先,BigTable 从 2004 年初就开始研发了,到现在为止已经用了将近8个月。(2005年2月)目前大概有100个左右的服务使用BigTable,比如: Print,Search History,Maps和 Orkut。

 

根据Google的一贯做法,内部开发的BigTable是为跑在廉价的PC机上设计的。BigTable 让Google在提供新服务时的运行成本降低,最大限度地利用了计算能力。

 

BigTable 是建立在 GFS ,Scheduler ,Lock Service 和 MapReduce 之上的。

每个Table都是一个多维的稀疏图 sparse map。

Table 由行和列组成,并且每个存储单元 cell 都有一个时间戳。在不同的时间对同一个存储单元cell有多份拷贝,这样就可以记录数据的变动情况。在他的例子中,行是URLs ,列可以定义一个名字,比如:contents。Contents 字段就可以存储文件的数据。或者列名是:”language”,可以存储一个“EN”的语言代码字符串。

 

为了管理巨大的Table,把Table根据行分割,这些分割后的数据统称为:Tablets。每个Tablets大概有 100-200 MB,每个机器存储100个左右的 Tablets。

 

底层的架构是:GFS。由于GFS是一种分布式的文件系统,采用Tablets的机制后,可以获得很好的负载均衡。比如:可以把经常响应的表移动到其他空闲机器上,然后快速重建。

Tablets在系统中的存储方式是不可修改的 immutable 的SSTables,一台机器一个日志文件。当系统的内存满后,系统会压缩一些Tablets。

 

由于Jeff在论述这点的时候说的很快,所以我没有时间把听到的都记录下来,因此下面是一个大概的说明:

压缩分为:主要和次要的两部分。

次要的压缩仅仅包括几个Tablets,而主要的压缩时关于整个系统的压缩。主压缩有回收硬盘空间的功能。Tablets的位置实际上是存储在几个特殊的BigTable的存储单元cell中。看起来这是一个三层的系统。

 

客户端有一个指向METAO的Tablets的指针。如果METAO的Tablets被频繁使用,那个这台机器就会放弃其他的tablets专门支持METAO这个Tablets。METAO tablets 保持着所有的META1的tablets的记录。这些tablets中包含着查找tablets的实际位置。(老实说翻译到这里,我也不太明白。)在这个系统中不存在大的瓶颈,因为被频繁调用的数据已经被提前获得并进行了缓存。

 

现在我们返回到对列的说明:列是类似下面的形式: family:optional_qualifier。在他的例子中,行:www.search-analysis.com 也许有列:”contents:其中包含html页面的代码。 “ anchor:cnn.com/news” 中包含着 相对应的url,”anchor:www.search-analysis.com/” 包含着链接的文字部分。列中包含着类型信息。

(翻译到这里我要插一句,以前我看过一个关于万能数据库的文章,当时很激动,就联系了作者,现在回想起来,或许google的 bigtable 才是更好的方案,且不说分布式的特性,就是这种建华的表结构就很有用处。)

注意这里说的是列信息,而不是列类型。列的信息是如下信息,一般是:属性/规则。 比如:保存n份数据的拷贝 或者 保存数据n天长等等。当 tablets 重新建立的时候,就运用上面的规则,剔出不符合条件的记录。

 

由于设计上的原因,列本身的创建是很容易的,但是跟列相关的功能确实非常复杂的,比如上文提到的 类型和规则信息等。为了优化读取速度,列的功能被分割然后以组的方式存储在所建索引的机器上。这些被分割后的组作用于列 ,然后被分割成不同的 SSTables。这种方式可以提高系统的性能,因为小的,频繁读取的列可以被单独存储,和那些大的不经常访问的列隔离开来。

 

在一台机器上的所有的 tablets 共享一个log,在一个包含1亿的tablets的集群中,这将会导致非常多的文件被打开和写操作。新的log块经常被创建,一般是64M大小,这个GFS的块大小相等。当一个机器down掉后,控制机器就会重新发布他的log块到其他机器上继续进行处理。这台机器重建tablets然后询问控制机器处理结构的存储位置,然后直接对重建后的数据进行处理。

 

这个系统中有很多冗余数据,因此在系统中大量使用了压缩技术。

Dean 对压缩的部分说的很快,我没有完全记下来,所以我还是说个大概吧:压缩前先寻找相似的 行,列,和时间数据。他们使用不同版本的: BMDiff 和 Zippy 技术。

BMDiff 提供给他们非常快的写速度: 100MB/s – 1000MB/s 。Zippy 是和 LZW 类似的。Zippy 并不像 LZW 或者 gzip 那样压缩比高,但是他处理速度非常快。

Dean 还给了一个关于压缩 web 蜘蛛数据的例子。这个例子的蜘蛛 包含 2.1B 的页面,行按照以下的方式命名:“com.cnn.www/index.html:http”.在未压缩前的web page 页面大小是:45.1 TB ,压缩后的大小是:4.2 TB , 只是原来的 9.2%。Links 数据压缩到原来的 13.9% , 链接文本数据压缩到原来的 12.7%。

 

Google 还有很多没有添加但是已经考虑的功能。
1. 数据操作表达式,这样可以把脚本发送到客户端来提供修改数据的功能。
2. 多行数据的事物支持。
3. 提高大数据存储单元的效率。
4. BigTable 作为服务运行。

好像:每个服务比如: maps 和 search history 历史搜索记录都有他们自己的集群运行 BigTable。
他们还考虑运行一个全局的 BigTable 系统,但这需要比较公平的分割资源和计算时间。
原文地址:http://blog.csdn.net/accesine960/archive/2006/02/09/595628.aspx

分享到:
评论

相关推荐

    Google's BigTable 原理 (中文)

    **Google's BigTable原理概述** Google的BigTable是一款强大的分布式数据存储系统,旨在处理大规模的半结构化数据。它的设计理念和实现技术对于现代云服务和大数据处理有着深远的影响。BigTable的设计灵感来源于...

    Google BigTable 中文版

    Google BigTable 是一个分布式数据存储系统,由Google公司设计并用于支持其大规模互联网服务。作为Google的三大核心技术之一(另外两个是GFS(Google文件系统)和MapReduce),BigTable在处理海量结构化和半结构化...

    BigTable原理详解

    BigTable是Google开发的一款分布式数据存储系统,旨在处理PB级别的大规模数据存储需求,其特点在于非关系型数据库、稀疏性、分布性和持久化存储。BigTable可以部署在成千上万台普通服务器上,支持广泛的应用场景,...

    Google三篇论文-BigTable英文版

    **BigTable:Google的分布式数据存储系统** BigTable是由Google开发的一种分布式数据存储系统,用于支持大规模、结构化的数据处理。...理解并掌握BigTable的工作原理,对于深入理解现代大数据处理技术至关重要。

    Google-Bigtable中文版、Google-File-System中文版、Google-MapReduce中文版

    标题中的“Google-Bigtable中文版、Google-File-System中文版、Google-MapReduce中文版”涵盖了三个关键的大数据处理技术,它们分别是Google Bigtable、Google File System(GFS)和Google MapReduce。这些都是由...

    Google BigTable和Chubby讲稿

    ### Google BigTable与Chubby关键技术解析 #### 一、引言 在当今互联网时代,海量数据处理成为各大科技公司面临的重大挑战之一。Google作为全球领先的科技企业,在此方面有着深厚的技术积累。其中,BigTable与...

    Google大数据经典论文(GFS/BigTable/MapReduce)

    这三篇论文共同构建了Google大数据处理的基础架构,对于理解现代大数据系统的工作原理至关重要。它们的理念和技术已经被广泛应用于各种场景,包括搜索引擎索引、数据分析、日志处理等。Hadoop,作为一个开源实现,受...

    北航云计算公开课04 Google Bigtable Database

    通过本次北航云计算公开课的学习,我们不仅了解了Google Bigtable作为一种高性能分布式数据库的基本原理和技术特点,还深入探讨了它与传统关系型数据库之间的差异以及在实际应用场景中的优势。这对于进一步研究大...

    谷歌BigTable GFS MapReduce三大论文中文版

    谷歌的BigTable、GFS(Google File System)和MapReduce是大数据处理领域的三大经典技术,它们为现代互联网公司的数据存储和处理奠定了基础。这三篇论文的中文版为我们提供了深入理解这些技术的宝贵资料。 首先,让...

    Google大数据三大论文中文版下载 Google论文MapReduce、GFS、Bigtable论文下载

    这些技术包括MapReduce、GFS(Google File System)和Bigtable,它们对现代大数据处理和云计算的发展产生了深远影响。以下是这三项技术的详细介绍: 1. MapReduce: MapReduce是一种编程模型,用于大规模数据集的...

    Google_BigTable中文版

    【Google BigTable中文版】是Google开发的一种分布式结构化数据存储系统,对于理解和应用大数据以及云处理具有重要的参考价值。...了解和掌握BigTable的原理和用法,对于从事云计算和大数据处理的IT专业人员至关重要。

    Google Mapreduce,GFS,Bigtable--Google三大核心技术论文

    详细了解GFS的工作原理和设计思路,可以查阅论文《The Google File System》(gfs-sosp2003.pdf)。 **3. Bigtable** Bigtable是Google的分布式数据存储系统,用于处理结构化和半结构化数据。它被设计用来支持大...

    GFS BigTable MapReduce中文版

    标题中的“GFS BigTable MapReduce中文版”指的是Google三篇经典的分布式系统论文的中文翻译版本,这三篇论文在IT行业中具有极高的影响力,尤其是对于从事云计算、大数据处理和分布式存储领域的专业人士而言。...

    google大数据论文 mapreduce hdfs bigtable

    标题中的“google大数据论文 mapreduce hdfs bigtable”揭示了三篇重要的谷歌论文,它们深入探讨了大数据处理的关键技术。MapReduce、HDFS(Hadoop分布式文件系统)和Bigtable都是谷歌在大数据处理领域的核心创新,...

    google云计算原理与应用PPT

    **谷歌云计算原理与应用** 谷歌云计算是互联网巨头Google提供的基于大规模分布式计算的一种服务,它将计算资源、存储资源以及各种应用程序服务通过网络提供给全球用户。本PPT深入浅出地探讨了谷歌云计算的核心原理...

    Google论文 MapReduce gfs BigTable

    在云计算领域,Google的三项核心技术——MapReduce、GFS(Google File System)和BigTable,对整个行业的数据处理和存储产生了深远影响。这三者共同构建了大规模分布式计算的基础架构,使得Google能够处理海量的数据...

    Bigtable:一个分布式的结构化数据存储系统

    《Bigtable:分布式结构化数据存储系统的解析》 Bigtable是由Google开发的一种大规模分布式数据库...通过深入研究Bigtable的原理和技术,开发者能够更好地设计和实现大规模数据存储解决方案,应对日益增长的数据挑战。

    谷歌GFS+Mapreduce+Bigtable三大论文中英文+PDF+WORD版本

    谷歌的GFS、MapReduce和Bigtable是大数据处理和分布式计算领域的里程碑式创新,这三者构成了谷歌的基础架构,对整个互联网行业产生了深远影响。现在,我们拥有的是一份包含这些核心论文的2021年修正版集合,涵盖了中...

Global site tag (gtag.js) - Google Analytics