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/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章