在一篇 blog 文章中,微软的 Dare Obasanjo 为大家分享了 Google 在 Seattle 召开的有关可拓展性(Scalability)的会议笔记,笔记的内容由 Google 员工 Jeff Dean 的发言整理而来,内容包括“MapReduce,BigTable,以及其他处理大规模数据集的分布式系统抽象方式”。根据 Dare 的笔记,讨论内容涉及 Google 目前三种主要的大规模可拓展架构: GFS (Google File System),提供大规模数据集并行处理能力的软件基础设施 MapReduce ,以及为结构数据提供分布式存储的 BigTable 。
报告包含 Google 软件基础设施许多引人入胜的特性。关于 GFS:
目前 Google 拥有超过 200 个的 GFS 集群,其中有些集群的计算机数量超过 5000 台。Google 现在拥有数以万计的连接池从 GFS 集群中获取数据,集群的数据存储规模可以达到 5 个 PB,并且集群中的数据读写吞吐量可达到每秒 40G。
MapReduce 方面:
开发者只需要为数据集编写特定的 Map/Reduce 操作,有时甚至只需 25-50 行代码就够了,而 MapReduce 软件微架构会处理并行任务并且向分布在各处的计算机分发任务,同时处理机器错误和数据中的错误条件并进行优化操作,例如把计算过程推移到靠近数据的一方执行来减少 I/O 带来的带宽消耗,还提供了系统监控并且通过数以千计的计算机保持服务的可拓展性。
关于 BigTable:
BigTable 不是一个关系型的数据库。它不支持关联或是类似于 SQL 的高级查询。取而代之的是多级映射的数据结构。这是一种面向大规模处理、容错性强 的自我管理系统,拥有 TB 级的内存和 PB 级的存储能力,每秒可以处理数百万的读写操作。目前,BigTable 正在为 Google 六十多种产品和项目提供 存储和结构化数据获取的支撑平台。
对于那些想自己尝试 Map/Reduce 操作的人来说,Apache Lucene 的子项目 Hadoop 提供了 MapReduce 的实现方式,以及类似于 GFS 的分布式文件系统 HDFS,Hadoop 项目对于你来说将可能会是个不错的开始。
评论