- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Google 云计算核心技术及应用场景分析(40P)
* * 云计算的基本概念 * 计算任务: 对爬虫获取的网页进行倒排索引; 计算网站的PageRank; 分析搜索趋势(Google Trends); 数百万计的网站流量的统计; 邮箱,文档服务等; 计算问题简单,但求解困难 待处理数据量巨大(PB级),只有分布在成百上千个节点上并行计算才能在可接受的时间内完成 如何进行并行分布式计算? 如何分发待处理数据? 如何处理分布式计算中的错误? 云计算的提出: Jeffery Dean设计一个新的抽象模型,使我们只要执行的简单计算,而将并行化,容错,数据分布,负载均衡的等杂乱细节放在一个库里,使并行编程时不必关心它们,这就是MapReduce * * MapReduce算法的调用过程 1. 在用户的应用程序中,MapReduce库首先将计算所需的输入文件分割成M块(每块从16MB到64MB不等,可由用户指定),然后在集群上的多台机器上启动相同程序的副本; 2. 在启动的所有程序副本中,有一个比较特殊,作为Master程序,剩下的机器被称为Worker,(假设有M个Map任务,R个Reduce任务),Master会挑选所有空闲中的Worker来指派给其Map或者Reduce任务; 3. 非配到Map任务的Worker会自动去读取被分割过的文件,通过运行用户定义的Map操作,来解析处理输入的数据,生成键值对,并不断的抛出;这些中间键值对构成中间结果集,会被缓存在内存中; 4. 因为内存的大小有限,每隔段时间,缓存的中间结果集会被写到执行Map任务的及其的硬盘上,在写之前,这些中间结果集会被Partition函数分隔成块,这些块的位置会报告给Master程序,因为这些文件将会作为Reduce任务的输入; 5. 当Reduce Worker受到Master程序发来的中间结果集任务时,通过远程调用来读取Map Worker上缓存的中间结果集,读取完毕之后,Reduce Worker会将中间结果集排序,所以相同的Key的键值对会排到一块,如果中间结果集太大,则使用外部程序来排序; 6. Reduce Worker通过遍历排序过的中间结果集,对于相同key的键值对进行合并化简,Reduce任务的结果将会被作为结果写入到GFS文件系统中; 7. 当所有的Map和Reduce操作都完成的时候,Master程序会唤醒用户的程序,通知其任务已经完成,继而执行其他的任务; 执行过程中的文件存储位置 源文件:GFS Map处理结果:本地存储 Reduce处理结果:GFS 日志:GFS * * 任务备份机制 慢的workers 会严重地拖延整个执行完成的时间,由于其他的任务占用了资源或者磁盘损坏; 解决方案: 在临近结束的时候,启动多个进程来执行尚未完成的任务,谁先完成,就算谁 本地处理 Master 调度策略: 向GFS询问获得输入文件blocks副本的位置信息,Map tasks 的输入数据通常按 64MB来划分 (GFS block 大小) 按照blocks所在的机器或机器所在机架的范围进行调度,绝大部分机器从本地读取文件作为输入,节省大量带宽 跳过有问题的记录 代码的BUG常导致Map/Reduce无法运行,最好的解决方法是调试或者修改,但是面对第三方库或源码时无法解决; 在每个worker里运行一个信号处理程序,捕获map或reduce任务崩溃时发出的信号,一旦捕获,就会向master报告,同时报告输入记录的编号信息。如果master看到一条记录有两次崩溃信息,那么就会对该记录进行标记,下次运行的时候,跳过该记录 * * Count of URL Access Frequency: The map function processes logs of web page requests and outputs URL; 1. The reduce unction adds together all values for the same URL and emits a URL; total count pair. ReverseWeb-Link Graph: The map function outputs target; source pairs for each link to a target URL found in a page named source. The reduce function concatenates the list of all source URLs associated with a given target URL and emits the pair:target; list(source); Inverted Index: The map fun
文档评论(0)