目前大数据的相关应用有不少都是从 MapReduce 衍生而出的,但,若把焦点移到即时资料(Real-Time Data)的需求上时就会发现它的不足之处。
因此,本篇文章将与各位读者分享,从 Google 发佈 GFS、大数据与 MapReduce 这些技术开始,到这些技术发展的现况与其所遭遇到的瓶颈,以及 Google 为了解决这些问题提出了哪些因应的技术。
- MapReduce,GFS 与 Bigtable,带动了大数据 应用技术的发展
Google 在 2003 年发表了第一篇论文 〈The Google File System〉。文中叙述,GFS(Google File System)是一个分散式档案系统,由数百个丛集(Cluster)所组成。简单来说,储存在 GFS 的档案会被切割成 64 MB 左右的资料块(Chunk),其利用重复的方式(Redundant Fashion)储存在丛集中。
2004 年,Google 发表了 MapReduce 论文 〈MapReduce: Simplified Data Processing on Large Clusters〉,如今,MapReuce 可以说几乎已经跟 Big Data 划上等号了。
Google 利用 MapReuce 演算法来计算查询索引(Search Index),让使用者能在最短的时间内从 Internet 上找到自己所需要/查询的资料。
2006 年,Google 发表了 Bigtable 论文 〈Bigtable: A Distributed Storage System for Structured Data〉,而 Bigtable 带领了许多 NoSQL 资料库的技术应用发展,像是 Cassandra、HBase 等等。
其中,Cassandra 的架构就整合了 Bigtable(资料模型、SSTables 及 Write-Through-Logs)与 Amazon 的 Dynamo 资料库(Peer-to-Peer Clustering Model)。
- Percolator,能够解决 MapReduce 无法处理个别更新的问题
随着 Internet 的网页呈现指数增加,MapReduce 每次都要全面地重新计算查询索引是非常不切实际的。因此,Google 为了提升系统的效能,开发了一个更有价值的分散式计算系统:Percolator。
Google 在 2010 年发表了相关的论文 〈 Large-scale Incremental Processing Using Distributed Transactions and Notifications〉,文中叙述 Google 如何在网路搜寻索引(Web Search Index)的技术持续地维持精进。例如,MapReduce 做计算时无法处理局部的更新,因此,在效能的改善部份是很有限的,而 Percolator 则弥补了这个弱点。
但是,各位读者千万不要误以为 Percolator 是用来取代 MapReduce 的。
Percolator 是建立于 Bigtable 之上的应用,它加入了对表(Table)与纪录(Row)的交易(Transaction)与锁定(Lock)机制,也就是当 GFS 做表的扫描时,一旦发现有更新过的纪录,就会透过触发程序(Trigger)告知这个改变,再依据读取(Read)或写入(Write)的请求,在不同阶段的工作过程中,针对资料表或记录做锁定或释放的管理机制。透过这样子的方式,来完成局部个体的更新。
- Pregel:用来处理网络社交关係的图型结构计算
Google 为了做网路社交关係的图型结构分析,开始针对图型结构探勘做相关的研究与发展,并在 2010 年发表了相关的论文 〈Pregel: A System for Large-Scale Graph Processing〉。
由于针对大型的图型结构做处理是非常复杂也具有挑战性的,尤其是网路的分散式处理让难度又提高了许多,因此,Pregel 的计算要比MapReduce 的计算要复杂许多,其主要是利用BSP(Bluk Synchronous Parallell)、PageRank、Bipartite Matching 等演算法来做计算的实践。而在论文中你也可以看到上述这些方法的实践。
- Dremel:只要花几秒鐘时间就可以分析 PB 等级的数据
在 2010 年,Google 还同时发表了一篇关于 Dremel 的论文,内容叙述 Dremel 是一个利用 SQL-like Language 的互动式资料库系统,用来储存结构化资料。
Dremel 的特色是,以列储存为主,以减少 CPU 与磁碟的读取,进而达到快速读取局部资料的目的;将查询的任务切割成多个小任务,以达到平行处理的目的;支援 Nested 数据模型,但只提供唯读功能。
- 大数据的相关应用,需要的不只是 MapReduce
Google 并没有在提出 MapReduce 之后,就停止了查询技术的发展,他们不断地发展新的技术以补强 MapReduce 的不足之处,这对 Big Data 的发展是有益的。
毕竟,MapReduce 不是万能的,以目前的状况来说,还是有许多的问题尚待解决,不过,Google 所发展出来的技术,带领了许多其他自由软体的发展,像 Apache Drill、Apache Giraph 以及 Stanford’s GPS 等等,这或许是身为使用者的我们最乐于见到的发展。