Google 成功的搜索引擎幕后的技术英雄非常简单:解决 PC 崩溃问题。
美国加利福尼亚州伯林格姆当地时间本周三,Google 负责技术和运营的副总裁 Urs Hoelzle 在 EclipseCon 会议上透露了 Google 数据中心运行的一些秘密。许多人都认为, Google 在运行数据中心方面的经验比其搜索算法更宝贵。
Google 能够以数以百万美元计,而不是数以千万美元计的资金构筑其计算基础设施的秘密是:购买相对廉价的计算机。通过研究硬件成本,Google 的技术人员发现,购买一些高端服务器的成本要远高于数十台更简单的“大众化”服务器。这种策略的难题就在于使这些硬件协调地运行,确保一台计算机的故障不会影响任务的执行,例如返回搜索结果或显示广告。
Hoelzle 说,我们考虑到了家用 PC。家用 PC 因软件和硬件缺陷而造成的崩溃每 3 年才会发生一次。他说,如果拥有数千台 PC,每天有一台 PC 崩溃是很正常的。因此,最好是能够以自动的方式解决这一问题,否则服务肯定会出现问题。
Google 已经开发了大量的软件工具,来完成计算设备的安装。它开发了被称为“Google文件系统”的文件系统,能够处理 64MB 大小的数据块。更为重要的是,它能够应付随时可能发生的磁盘或网络故障。Hoelzle 说,我们开发了容错软件。如果有应付故障的措施,PC 就完全可以担负提供互联网服务的重任。Google 数以千计的 PC 服务器运行一种基于 Red Hat 版本的简化版 Linux,该版本只是针对 Google 专门修改的操作系统内核。
Google 还设计了一种能够处理海量数据、迅速响应查询的系统,它将整个 Web 划分为数以百万计的 Google 的技术人员称之为 shard 的小块儿。Google 创建了一个出现在 Web 上的词汇的索引,但它还有大量的文档服务器存储收集的网页。
据 Hoelzle 称,Google 另一个重要的技术创新是,使在数以千计的服务器上运行的软件的开发非常简单。通常情况下,开发在并行服务器上运行的应用软件需要专门的编程工具和技能。名为 MapReduce 的这款编程工具对于 Google 降低成本是非常重要的。Hoelzle 说,成本是购买设备的成本和编写软件的编程时间之和。从去年开始,Google 已经开始大面积使用 MapReduce 编程工具。
Google 还开发了批量任务调度软件。名为 Global Work Queue 的这款软件能够将计算工作分解成许多更小的任务,并将它们分配给各台计算机完成。
Hoelzle 表示,尽管考虑了故障问题,但这还不能解决所有问题。在演讲中,它展示了用于应对 Google 数据中心发生的紧急事件的6辆救火车的照片。
在接受 CNET News.com 采访时,Hoelzle 表示,电力成本是 Google 的数据中心设计中的另一个重要因素。他说,不包括人力成本在内的运行成本直接与电力成本相关。电力是降低数据中心运行成本的一个因素,我们不但要降低设备采购费用,还需要降低运行成本。
MapReduce:Google的人间大炮
网络上关于MapReduce的介绍,最权威的就是 Jeffrey Dean
和 Sanjay Ghemawat 的那篇:MapReduce: Simpli ed Data Processing on Large Clusters
您可以到 labs.google.com 上下载。
对goole这样需要分析处理海量数据的公司来说,普通的编程方法已经不够用了。于是 google开发了MapReduce。简单来说,语法上MapReduce就像Lisp,使用MapReduce模型你可以指定一个Map方法来处理诸如key/value这样的数据,并生成中间形式的 key/value 对,然后再使用 Reduce方法合并所有相同key的中间 key/value 对生成最终结果。google的MapReduce是运行在数千台机器上的处理TB数据的编程工具。
据说在MapReduce这样的编程模型下,程序可以自动的集群机器中在按照并行方式分布执行。就如同java程序员可以不考虑内存泄露一样, MapReduce程序员也不许要关心海量数据如何被分配到多台机器上,不需要考虑如果参加计算的机器出现故障应该怎么办,不需要考虑这些机器间如何协作共同完成工作的。
举个例子吧:最近我在做贝叶斯论坛垃圾帖屏蔽演示系统 Beta 1 的时候,就需要计算样本数据中每个词语出现的频率。我的计算步骤就是先分词,然后用hash表处理。要是碰到TB的数据,我的赛扬CPU可是吃不消。那么放在MapReduce下面会是什么样子呢?
下面是一个伪实现:
第一步:
map(String key, String value):
// key: 文档名称
// value: 文档内容
for each word w in value:
EmitIntermediate(w, "1");
第二步:
reduce(String key, Iterator values):
// key: 一个词
// values: 关于这个词的频率数据
int result = 0;
for each v in values:
result += ParseInt(v);
Emit(AsString(result));
如果你看过向量空间模型就知道,这就是计算 TF 和 IDF 的语义实现。
Google的WebReduce 包是用C++实现的,在MapReduce: Simpli ed Data Processing on Large Clusters 一文中还包含了一段真实的WebReduce的代码,可以看看,饱饱眼福。
MapReduce所用的思想叫做Skeletal Parallelism,在1989年以前就出现了,当时叫Algorithmic Skeletons
在近十多年欧洲的并行计算程序设计语言的研究中,它从来就没中断过,即便是在初期所取得的成果也远远超出MapReduce这个技术里需要用到的内容。见
http://homepages.inf.ed.ac.uk/mic/Skeletons/
Google的MapReduce从理论上讲实际只是一个最简单skeleton,其难度决不在于语言和并行技术设计上,而在于它是一个大规模的real world application,因此鲁棒性和容错比较重要,但它的文章里却对此谈之甚少,不知道为什么。
写文章的人不是科学研究者,而是工程师,OSDI发了这篇文章的主要原因还是因为它来自Google,主要是作为一个real world的demonstration.
分享到:
相关推荐
Java程序员成功面试秘籍.pdf
在信息技术领域,我们可以将成功的秘诀英语演讲稿所提到的要素应用于我们的职业生涯中。例如,我们可以通过努力和学习,提高自己的技术技能,使自己具备更多的职业发展机会。同时,我们还可以通过抓住机会,例如参加...
《陈安之—成功秘诀大公开》是一套由著名成功学导师陈安之所著的教程,旨在分享他的成功经验和智慧,帮助人们实现个人与职业生活中的成功。这套教程可能涵盖了多个方面,包括心态建设、目标设定、自我管理、人际交往...
成功的技术人员会花费大量时间研究新技术、解决复杂问题,并积极参与项目开发,不断提升自己的专业技能。他们明白,无论是编程、网络安全还是数据分析,都需要时间和耐心去积累,才能在竞争激烈的市场中脱颖而出。 ...
【成功秘诀解析】 陈安之的成功秘诀主要围绕着个人思维的力量,尤其是潜意识的作用,他认为理解和运用这些原理是实现财务自由的关键。以下是对这些概念的深入解析: 1. **理解金钱的本质**:陈安之强调,钱不仅仅...
总结起来,这份秘籍教导我们,成功的秘诀在于坚定的信念、有效的人际关系管理、挖掘自身的潜能、积极的行动以及坚韧的意志。这些原则不仅适用于技术行业的主管,也适用于任何领域的领导者或追求成功的人。通过不断...
【追求卓越——美国著名企业成功秘诀】 迪斯尼的成功源于其独特的企业文化和对卓越的不懈追求。迪斯尼世界作为全球知名的娱乐品牌,其魅力不仅仅在于“米老鼠”这一标志性的角色,更在于公司对员工的精心培训和对...
《JAVA成功面试秘籍》是一本专为Java开发者准备的面试指南,旨在帮助读者全面掌握Java编程语言的核心概念和技术,从而在求职过程中脱颖而出。书中的内容涵盖了Java的基础知识、高级特性,以及在实际开发中广泛使用的...
### Google持续成长的秘籍 #### 一、Google的核心价值:全球信息的有效组织者 Google作为全球最大的搜索引擎,自成立以来一直致力于实现“全球信息的有效组织”。Google存储了超过80亿个网页和13亿张图片,这不仅...
【Google排名秘籍 王通】:在互联网营销领域,搜索引擎优化(SEO)是提升网站可见度的关键策略,特别是对于全球最大的搜索引擎Google而言。"Google排名秘籍 王通"很可能是一份由知名网络营销专家王通编写的指南,...
### Facebook的成功秘诀及其本质 #### 引言与背景 自2005年起,随着互联网技术的迅猛发展,社交网络服务(Social Networking Service,简称SNS)成为了互联网领域的一个热门现象。在中国,一批模仿美国社交巨头...
- **成功案例**:已有超过50名学生在徐老师的指导下,成功进入剑桥大学、牛津大学和哈佛大学等世界顶级学府。 ### 2. 徐火辉教授的观点与理念 #### 教育背景 - **个人简介**:徐火辉是一位国际比较教育专家,同时...
《成功的秘诀》这篇文章揭示了成功的基本要素,通过爱因斯坦给出的公式W=X+Y+Z,我们可以深入理解成功背后的深层含义。W在这里被定义为成功,而X、Y、Z则分别代表了艰苦的努力、正确的方法和少说空话。这个公式为...
作者把大型软件系统的成功归纳为20条基本原则,并向读者介绍了现代信息技术给人类思维带来的新理念。其文字和写作风格也不同于常规的工程技术类书。由于本书避免了枯燥的技术细节和冗长的理论叙述,因而本书不只是...
在《主管成功秘籍》中,通过一系列有趣的故事和名人的观点,阐述了通往成功的多种路径和心态。 首先,成功的关键在于坚定的信念。信念如同主管的指南针,指引他们在困境中坚持前行。面对挑战时,要有在寒冷中锻炼出...
### 鲁迅成功的秘诀:时间管理与勤奋 #### 一、引言 鲁迅,中国现代文学的重要奠基人之一,其作品深刻反映了社会现实和个人情感。他的成功并非偶然,背后蕴含着一系列值得学习的方法和态度。本文将从《鲁迅成功的...
"直销人成功的八大心态--直销领袖葛军1年组建9万人团队的秘诀" 本文主要讲述了直销人成功的八大心态,...成功的秘诀就在于改变自己的心态,采取老板的心态和行为,拥有老板的格局和目标。只有这样,我们才能达到成功。
《像拍电影一样做软件:IT项目管理成功秘诀》主要对比分析了影片制作与IT项目之间的相通之处,旨在通过好莱坞众多电影公司项目管理的长期实践,探寻出值得IT领域去借鉴的成功之道。通过实践《像拍电影一样做软件:IT...
创业成功的秘诀.doc
在《微软经典丛书之团队——成功的秘诀》中,作者深入探讨了软件开发和项目管理中的团队协作要素,揭示了高效团队实现成功的关键因素。本文将围绕这个主题,详细阐述团队建设、项目管理策略以及如何在软件开发过程中...