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/
分享到:
相关推荐
通常情况下,获取Android源码最安全、最可靠的方式是从Google官方的GitHub仓库或者通过其官方提供的AOSP (Android Open Source Project)镜像网站下载。因此,在此我们将主要围绕官方渠道获取并理解Android源码进行...
/* number of i2c_msgs */ }; int i2c_read_reg(char *dev, unsigned char *buf, unsigned slave_address, unsigned reg_address, int len) { struct i2c_rdwr_ioctl_data work_queue; unsigned char w_...
rootroot@cm-System-Product-Name:/home/wwt/softap_ap6212a0_tinav2.1$ source build/envsetup.sh including target/allwinner/tulip-d1/vendorsetup.sh including target/allwinner/octopus-sch/vendorsetup.sh ...
struct vfe_dev *dev= container_of(work, struct vfe_dev, probe_work.work); int ret = 0; int input_num; int device_valid_count = 0; struct video_device *vfd; char vfe_name[16] = {0}; mutex_lock(&...
struct vfe_dev *dev= container_of(work, struct vfe_dev, probe_work.work); int ret = 0; int input_num; int device_valid_count = 0; struct video_device *vfd; char vfe_name[16] = {0}; mutex_lock(&...