作者:江南白衣,原文出处: http://blog.csdn.net/calvinxiu/archive/2007/01/31/1498597.aspx
如果说Google的搜索引擎是免费的早餐,Gmail们是免费的午餐的话,
http://labs.google.com/papers/ 就是Google给开发人员们的一份免费的晚餐。
不过,咋看着一桌饭菜可能不知道从哪吃起,在自己不熟悉的领域啃英文也不是一件愉快的事情。
一、一份PPT与四份中文翻译
幸好,有一位面试google不第的老兄,自我爆发搞了一份Google Interal的PPT:
http://cbcg.net/talks/googleinternals/index.html,大家鼠标点点就能跟着他匆匆过一遍google的内部架构。
然后又有崮崮山路上走9遍(http://sharp838.mblogger.cn)与美人他爹(http://my.donews.com/eraera/),翻译了其中最重要的四份论文:
- 《MapRedue:在超大集群上的简易数据处理》--Simplified Data Processing on Large Clusters
- 《The Google File System》
- 《海量数据分析:Sawzall并行处理》--Interpreting the Data: Parallel Analysis with Sawzall
- 《Bigtable:结构化数据的分布存储系统》--A Distributed Storage System for Structured Data
二、Google帝国的技术基石
Google帝国,便建立在大约45万台的Server上,其中大部分都是"cheap x86 boxes"。而这45万台Server,则建立于下面的key infrastructure:
1.GFS(Google File System):
GFS是适用于大规模分布式数据处理应用的分布式文件系统,是Google一切的基础,它基于普通的硬件设备,实现了容错的设计与极高的性能。
李开复说:Google最厉害的技术是它的storage。我认为学计算机的学生都应该看看这篇文章(再次感谢翻译的兄弟)。
它以64M为一个Chunk(Block),每个Chunk至少存在于三台机器上,交互的简单过程见:
2.MapReduce
MapReduce是一个分布式处理海量数据集的编程模式,让程序自动分布到一个由普通机器组成的超大集群上并发执行。像Grep-style job,日志分析等都可以考虑采用它。
MapReduce的run-time系统会解决输入数据的分布细节,跨越机器集群的程序执行调度,处理机器的失效,并且管理机器之间的通讯请求。这样的模式允许程序员可以不需要有什么并发处理或者分布式系统的经验,就可以处理超大的分布式系统得资源。
我自己接触MapReduce是Lucene->Nutch->Hadoop的路线。
Hadoop是Lucene之父Doug Cutting的又一力作,是Java版本的分布式文件系统与Map/Reduce实现。
Hadoop的文档并不详细,再看一遍Google这篇中文版的论文,一切清晰很多(又一次感谢翻译的兄弟)。
孟岩也有一篇很清晰的博客:Map Reduce - the Free Lunch is not over?
3.BigTable
BigTable 是Google Style的数据库,使用结构化的文件来存储数据。
虽然不支持关系型数据查询,但却是建立GFS/MapReduce基础上的,分布式存储大规模结构化数据的方案。
BigTable是一个稀疏的,多维的,排序的Map,每个Cell由行关键字,列关键字和时间戳三维定位.Cell的内容是一个不解释的字符串。
比如下表存储每个网站的内容与被其他网站的反向连接的文本。
反向的URL com.cnn.www(www.cnn.com)是行的关键字;contents列存储网页内容,每个内容有一个时间戳;因为有两个反向连接,所以archor列族有两列:anchor:cnnsi.com和anchhor:my.look.ca,列族的概念,使得表可以横向扩展,archor的列数并不固定。
为了并发读写,热区,HA等考虑,BigTable当然不会存在逗号分割的文本文件中,,是存储在一种叫SSTable的数据库结构上,并有BMDiff和Zippy两种不同侧重点的压缩算法。
4.Sawzall
Sawzall是一种建立在MapReduce基础上的领域语言,可以被认为是分布式的awk。它的程序控制结构(if,while)与C语言无异,但它的领域语言语义使它完成相同功能的代码与MapReduce的C++代码相比简化了10倍不止。
2 submits: table sum[hour: int] of count: int;
3 log: ChangelistLog = input;
4 hour: int = hourof(log.time)
5 emit submits[hour] <- 1;
天书吗?慢慢看吧。
我们这次是统计在每天24小时里CVS提交的次数。
首先它的变量定义类似Pascal (i:int=0; 即定义变量i,类型为int,初始值为0)
1:引入cvsstat.proto协议描述,作用见后。
2:定义int数组submits 存放统计结果,用hour作下标。
3.循环的将文件输入转换为ChangelistLog 类型,存储在log变量里,类型及转换方法在前面的cvsstat.proto描述。
4.取出changlog中的提交时间log.time的hour值。
5.emit聚合,在sumits结果数组里,为该hour的提交数加1,然后自动循环下一个输入。
居然读懂了,其中1、2步是准备与定义,3、4步是Map,第5步是Reduce。
三. 小结:
本文只是简单的介绍Google的技术概貌,大家知道以后除了可作谈资外没有任何作用,我们真正要学习的骨血,是论文里如何解决高并发,高可靠性等的设计思路和细节.....
相关推荐
小猫的晚餐-少儿编程scratch项目源代码文件案例素材.zip
小鹿的晚餐-少儿编程scratch项目源代码文件案例素材.zip
16--[小鹿的晚餐].zip源码scratch2.0 3.0...1.合个人学习技术做项目参考合个人学习技术做项目参考 2.适合学生做毕业设计项目参考适合学生做毕业设计项目参考 3.适合小团队开发项目模型参考适合小团队开发项目模型参考
5--[小猫的晚餐].zip源码scratch2.0 3.0...1.合个人学习技术做项目参考合个人学习技术做项目参考 2.适合学生做毕业设计项目参考适合学生做毕业设计项目参考 3.适合小团队开发项目模型参考适合小团队开发项目模型参考
scratch3小狗的晚餐sb3,关卡游戏,完成任务过关,比较简单
本书系统地介绍了Google公司推出的一系列与我们生活息息相关的软件和服务的使用方法,并精选目前网络上最实用、最流行的Google软件和服务进行了详细的讲解,如Google浏览器、网页搜索、多媒体搜索、生活搜索、财经...
•如果您在授权时遇到麻烦,请务必首先执行https://github.com/manastungare/google-calendar-crx/wiki/Troubleshooting中的所有步骤。 •如果发现错误,请提交错误。不要在评论中简单地提到它,并期望它被修复 - ...
leetcode中国 本repo仅供本人学习使用,不做任何商业用途。...下午四点去吃个晚饭 18:30-22:00 打拳、车店 22:00-23:00 整理工作+计划 洗澡 23:00-07:30 睡觉 周计划 5.19-5.26 英语 五套TPO CS 10题leet
本文介绍了Leonardo da Vinci在他创建或创作《最后的晚餐》时所想象的三维空间模型重建的几何方法。 目的是揭示这种艺术作品固有的几何原理,并提出一种从2D到3D空间重构的反几何方法。
晚饭吃什么? 我在做晚餐时遇到的一个难题是提前计划好饭菜。 我需要的大部分帮助都是有一个购物清单,这样我一次可以至少购物 2-3 天。 假设树没有改变,这可以一致地重现给定日期的决定。 示例输出: $ wifd ...
- 每天在早餐,午餐,晚餐和小吃中学习吃什么,以便做出持续健康的选择; - 遵循足够维生素和微量元素的健康,营养均衡的饮食; - 使用我们的水跟踪器提醒保持水分。 更多:其他许多很酷的功能可以让您的跑步锻炼更...
大一课设基于java开发的早中晚餐食谱管理系统源码.zip大一课设基于java开发的早中晚餐食谱管理系统源码.zip大一课设基于java开发的早中晚餐食谱管理系统源码.zip大一课设基于java开发的早中晚餐食谱管理系统源码.zip...
哲学家的晚宴_-特工- 为操作员准备的哲学家晚餐计划
意象晚餐
晚餐轮盘这是什么? 用于存储菜肴食谱的Web应用程序。 它具有创建食谱的用户和可以接受食谱的管理员,然后其他人才能看到它们。 项目包含分离的前端和后端RESTful API。 前端是在React.js中创建的。 后端使用Python...
我的哲学家问题我的Dinning哲学家问题,C#,. NET 5.0如何使用见private static void DailyLife ( object item )在/src/Program.cs中见# ... 见public static readonly int DAYTIME = 2 ; 在/src/Program.cs的开头
停止争论谁曾或不曾说过他们曾或不在晚餐中。 证明我妈妈做错了。 设置 复制.env.dist和ormconfig.json.dist文件,重命名并删除.dist部分。 cp .env.dist .env && cp .ormconfig.json.dist ormconfig.json 码头...
2022.5.12学习日记学习今天开始学习vue3框架基础语法午餐晚餐疯狂星期四!其他下头老师 申请了自修还算缺勤 太下头了体重。
从第1天的晚餐后到第15天的早餐后,每天口服两次S-1(40-60 mg),然后休息7天。 结果:PFS中位数为15.0个月,OS中位数为36.0个月。 缓解率(RR:完全性脓性部分缓解)为85.0%,疾病控制率(DCR:RR加稳定疾病)为...
https://dogehouse.tv/结构kousa-> Elixir API shawarma->语音服务器kofta-> React前端晚餐-> Puppeteer shenanigans贡献DogeHouse愿意接受贡献,但我建议创建一个问题或在评论中回复让我那样一来,您就知道您在做...