free lunch of open source

Google File System
Google有Google File System;Doug Cutting在Nutch中把Google FS实现了,最后这个项
目从nutch中分出来,成为了现在的Hadoop — Hadoop Distributed FileSystem(HDFS)
(Java);Google 两个共同创始人的两个大学同窗(印度人)Anand Rajaraman和Venky
Harinarayan搞了个Kosmix的搜索引擎,然后将他们的GFS-like FileSystem — Kosmos (
C++)FS捐献给开源社区。
(Google FS的论文发表在03年)

Map-Reduce
有了强大的分布式文件系统,Google遇到的问题就是怎么才能让公司所有的程序员都学会
些分布式计算的程序呢?于是,那些Google工程师们从lisp和其他函数式编程语言中的映
射和化简操作中得到灵感,搞出了Map/Reduce这一套并行计算的框架。Map/Reduce被Googl
e拿来重新了Google Search Engine的整个索引系统。而Doug Cutting同样用Java将这一套
实现和HDFS合在一起成为Hadoop的Core。(附:Hadoop目前被很多美国大学搞云计算、Dat
a-Intensive Scalable Computing做基础。)
(Map/Reduce的论文发表在04年)

BigTable
有了强大的存储,有了强大的计算能力,剩下的Google要面对的是:它的应用中有很多结
构化、半结构化的数据,如何高效地管理这些结构化、半结构化的数据呢?Google需要的
是一个分布式的类DBMS的系统,于是催生了BigTable这个东西。开源社区用HBase和Hypert
able两种不同的语言分别实现了类BigTable的系统。这两个语言分别是Java和C++。很有趣
的是,Hypertable的开发人员原来是跟Hbase一起搞的,但是似乎Hypertable不爽Java的效
率,就出来立山头了。不过这两个团队经常一起吃饭讨论。
(BigTable的论文发表在06年,其中有个作者好像是中国人。)

Sawzall
针对大量数据集的分析,单单靠底层的系统API进行操作是十分不方便的,于是Google基于
Map/Reduce实现了语法类似于java和c的语言—Sawzall。而Yahoo在06年雇佣了Doug
cutting之后也很care Hadoop这套类Google的存储、计算能力。于是Yahoo! Research在
猪年5.1期间放出了类SQL语法的语言Pig。此外微软似乎也有类似产品Dryad。

Google:Interpreting the Data: Parallel Analysis with Sawzall
http://labs.google.com/papers/sawzall-sciprog.pdf

Microsoft:Dryad: Distributed Data-Parallel Programs from Sequential Building
Blocks
http://research.microsoft.com/users/mbudiu/eurosys07.pdf

Protocol Buffer
同样有趣的是,Google在Sawzall这篇文章中提到的Google用来让多种语言进行通讯的Prot
ocol Buffer在Facebook贡献的开源项目Thrift中被类似的实现了。(Facebook在最近几个
月会开源它基于Hadoop的存储计算框架—Hive。)

Chubby lock service
在Google这种loosely-coupled的分布式系统中,需要一种分布式锁服务来保证系统的一致
性。于是Google有了Chubby lock service。而同样是Yahoo! Research向开源贡献了Zook
eeper,一个类似Google Chubby的项目。(Yahoo!果然是一个很神奇的公司。也不难理解
为什么微软要花那么大的力气来买Yahoo了!微软要的就是这帮人!)

回到Hadoop上,由这个项目催生的很多子项目也是尽展hadoop的能力。

Mahout:一个利用Map/Reduce的机器学习算法库。基于Stanford 06年在nips上发表的一篇
文章"Map/Reduce for machine learning on multicore"。有对机器学习感兴趣的同学可
以看看。
http://www.cs.stanford.edu/people/ang//papers/nips06-mapreducemulticore.pdf

Hamma:一个同样也是利用Map/Reduce的矩阵计算包。目前还是Apache的孵化项目。

DLucene:一个利用Map/Reduce的distributed lucene。在04年还是06年,Doug Cutting在
maillist上提出过。最近在Maillist上有个人重新提出,并通过投票进入孵化状态。

……

Thanks To Open Source 。。。

附:

Hadoop:http://hadoop.apache.org/core/
KFS:http://kosmosfs.sourceforge.net/
HBase:http://hadoop.apache.org/hbase/
Hypertable:http://www.hypertable.org/
Mahout:http://lucene.apache.org/mahout/
Pig:http://incubator.apache.org/pig/
Zookeeper:http://sourceforge.net/projects/zookeeper
Thrift:http://developers.facebook.com/thrift/

你可能感兴趣的:(hadoop,Google,hbase,Lucene,Facebook)