闲聊Google集群

来源:互联网 发布:xmouse软件下载 编辑:程序博客网 时间:2024/05/22 03:18

转:http://blog.sina.com.cn/s/blog_46d0a3930100ad76.html

为什么讨论技术问题,很少出现热烈的辩论?不是问题本身无趣,而是进入壁垒比较高。要参与辩论,首先必须明白论战双方在讲什么。进入壁垒高,参与者就少。人数少了,自然就不热烈。

如何挑起技术辩论?或许横向比较是一个招儿。集群技术有几个学派?这些学派的差异在哪里?为什么Google不沿用现成的技术,而是另起炉灶?都说Google的集群做的好,是不是其它集群技术就没有前途?

有记者问李开复,Google的技术优势在哪里?开复答,1. PageRanking的排序算法,2. 超大规模集群。 Google的集群,2000年初的时候由一千多台服务器组成。到了2006年初,根据Google给Dell的订单推算,估计是40万到50万台服务器的规模。两年多过去了,目前Google的集群有多大?有论者猜测,估计已经超过1千万台机器了。

PageRanking的算法相对比较容易跟风,但是想效仿Google的集群就不是那么容易了。Google的集群里到底藏了什么药?我们这个系列就谈 谈这个问题。之所以是闲聊,1. 节奏和篇幅比较随意,2. 强调横向比较,背景解释比较多, 3. 掺杂个人观点(当然会明确标注),欢迎大家拍砖。

[2] 存在的理由

早期的搜索引擎,基本原理是关键词匹配。

譬如用户输入关键词"奥运会",

搜索引擎的任务是查找与奥运会相关的网页。如果恰好有一篇网页,内容无他,"奥运会,奥运会,。。。",连说100遍。早 期的搜索引擎肯定把这个网页放在结果的首页,说不定还置顶,因为, 1. 网页内容中,"奥运会"这个关键词出现的频率非常高,2. 没有出现与奥运会不相干的内容。

早期搜索引擎的问题很明显,但是如何解决,却是仁者见仁智者见智。

1996年,刚刚入学Stanford计算机系的Larry Page和Sergey Brin哥俩儿觉得,提高搜索引擎的准确性,或许可以从网页与网页之间的相互链接入手。譬如,网页A中提到奥运会时,给了一个链接,指向网页甲,那么网页 甲的内容很可能与奥运会相关。如果不仅网页A有这样的链接,而且网页B,C,D等等,都有类似的链接,那么网页甲的内容与奥运会相关的可能性就极高。

批评者说,这不是三人成虎吗?Larry心里也没谱,就跑去问他的导师,Terry Winograd。

导师外形很像爱因斯坦,想了一想,说,"先把Stanford校园网内所有网页收集下来,验证一下你们的想法。然后扩大到更大范围,再验证一下。如果验证 的结果不错,就把全世界互联网的所有网页,统统收集下来,做一个搜索引擎,上线,让全世界的人用,让全世界的人都来验证你们的猜想。"

两年后,1998年,Google上线了,三人成虎的猜想被实践证明是行之有效的。

Terry导师大手一挥,"把全世界互联网的所有网页,统统收集下来",可把Larry和Sergey哥俩儿忙坏了。互联网上有多少网页,统统收集下来, 需要占用多少硬盘空间?Larry和Sergey当时是博士班一年级学生,囊中羞涩,买不起那么多设备,没办法,开始四处讨钱。

托了七大姑八大姨,拐弯抹角找到了一个大款,名叫Andy Bechtolsheim。此公早年在CMU拿了EE的硕士后,跑到Stanford读CS/EE博士。没来得及拿到博士学位,就伙同Scott McNealy和Vinod Khosla,下海开公司去了,这个公司就是大名鼎鼎的SUN Microsystems。 Scott McNealy任SUN的CEO长达20多年,而Andy Bechtolsheim功成身退,跳出SUN自己开了一个小公司,后来这个小公司卖给了Cisco。

坊间传说,Larry和Sergey拜访Andy的时候,Andy正在电话上。冗长的电话,Larry和Sergey两个小伙子血气方刚,哪里耐得住这份性子,抬腿告辞。因为是朋友介绍,Andy有点过不去,就追到门口。问,"二位上门,有何需求?"

Larry和Sergey铁青着脸,说,"也没什么大事,就是想找点钱,做一个大规模文件系统。"

Andy问,"多大规模呢?存储什么数据?"

Larry和Sergey,"打算把互联网上所有网页都下载,然后建一个搜索索引。"

Andy,"把互联网上所有网页统统下载?!需要多大空间?几个Giga不行吧,几个Tera也不行吧,几个Peta,几个Zetta?。。。嗯,我看几个Googol也许才能撑得住。知道Googol吗?就是10的100次方,就是一个1后面拖100个0!"

Larry和Sergey,"是的,我们的确就是打算处理海量数据。"

Andy,"你们打算怎么做?买个EMC?那玩意儿很贵的哟,我可没那么多钱让你们烧。"

Larry和Sergey,"我们打算自己动手,用一堆PC做一个分布式集群。"

Andy,"PC?死机了怎么办?干嘛不用工作站,干嘛不用NFS?"

Larry和Sergey,"工作站比PC贵太多,NFS的不是很切合我们的需要。。。"

Andy挤出一点笑容,"好吧,小伙子们,给朋友一个面子,而且年轻人探险也是值得鼓励的。给你们10万吧,省着点花啊!"

Andy掏出支票本,一边签名一边问,"你们的公司叫什么?"

Larry和Sergey面面相觑,那时候他们还没来得及给公司取名。"要不就叫Googol吧?","Googol不太好拼写,要不改一改,叫Google吧。" Google这个名字从此诞生。

。。。

以上是传说,但是有几点倒是有价值的。

1. 以Andy的身价,10万美元实在是九牛一毛。1998年10万美元的投资,到了2004年Google上市时,值多少钱?现在又增长到多少钱?不忍心计算,估计Andy悔得肠子都青了。

2. 如果需要10个Tera byte,也就是1万个Giga的硬盘的空间,或许1个EMC服务器就够了。但是同样空间,却需要10个PC。从价钱看,10个PC大致是5千美元,而一 个硬盘空间相似的EMC服务器要价1.5万美元左右。当硬盘空间的规模大幅度增长的时候,购买EMC高端设备的花费,将远远超过购买众多低端PC的成本。

3. 用廉价的PC,就必须想办法保障稳定性。换句话说,少数PC死机了,不能影响整个集群的正常工作。

4. 处理海量数据,内存和IO速度是生死劫。廉价的PC,内存有限,IO接口速度也有限。如何解决?

5. 应付海量数据的存储技术很多,EMC,NFS(Network File System),AFS(Andrew File System),RAID(Redundant Array of Inexpensive Disks),还有SAN(Storage Area Network)和NAS(Network Attached Storage)等等。Google的两位创始人,为什么不沿用现成的技术,而是选择了另辟蹊径,莫非自讨苦吃?


欲知答案,且听下回分解。