Welcome

首页 / 软件开发 / C++ / 分布式基础学习【二】 —— 分布式计算系统(Map/Reduce)

分布式基础学习【二】 —— 分布式计算系统(Map/Reduce)2011-04-14 博客园 duguguiyu二. 分布式计算(Map/Reduce)

分布式式计算,同样是一个宽泛的概念,在这里,它狭义的指代,按Google Map/Reduce 框架所设计的分布式框架。在Hadoop中,分布式文件系统,很大程度上,是为各种分布式计 算需求所服务的。我们说分布式文件系统就是加了分布式的文件系统,类似的定义推广到分 布式计算上,我们可以将其视为增加了分布式支持的计算函数。从计算的角度上看, Map/Reduce框架接受各种格式的键值对文件作为输入,读取计算后,最终生成自定义格式的 输出文件。而从分布式的角度上看,分布式计算的输入文件往往规模巨大,且分布在多个机 器上,单机计算完全不可支撑且效率低下,因此Map/Reduce框架需要提供一套机制,将此计 算扩展到无限规模的机器集群上进行。依照这样的定义,我们对整个Map/Reduce的理解,也 可以分别沿着这两个流程去看。。。

在Map/Reduce框架中,每一次计算请求,被称为作业。在分布式计算Map/Reduce框架中, 为了完成这个作业,它进行两步走的战略,首先是将其拆分成若干个Map任务,分配到不同的 机器上去执行,每一个Map任务拿输入文件的一部分作为自己的输入,经过一些计算,生成某 种格式的中间文件,这种格式,与最终所需的文件格式完全一致,但是仅仅包含一部分数据 。因此,等到所有Map任务完成后,它会进入下一个步骤,用以合并这些中间文件获得最后的 输出文件。此时,系统会生成若干个Reduce任务,同样也是分配到不同的机器去执行,它的 目标,就是将若干个Map任务生成的中间文件为汇总到最后的输出文件中去。当然,这个汇总 不总会像1 + 1 = 2那么直接了当,这也就是Reduce任务的价值所在。经过如上步骤,最终, 作业完成,所需的目标文件生成。整个算法的关键,就在于增加了一个中间文件生成的流程 ,大大提高了灵活性,使其分布式扩展性得到了保证。。。

I. 术语对照

和分布式文件系统一样,Google、Hadoop和....我,各执一种方式表述统一概念,为了保 证其统一性,特有下表。。。

文中翻译Hadoop术语Google术语相关解释
作业JobJob用户的每一个计算请求,就称为一个作业。
作业服务器JobTrackerMaster用户提交作业的服务器,同时,它还负责各个作业任务的分 配,管理所有的任务服务器。
任务服务器TaskTrackerWorker任劳任怨的工蜂,负责执行具体的任务。
任务TaskTask每一个作业,都需要拆分开了,交由多个服务器来完成,拆 分出来的执行单位,就称为任务。
备份任务Speculative TaskBuckup Task每一个任务,都有可能执行失败或者缓慢,为了降低为此付 出的代价,系统会未雨绸缪的实现在另外的任务服务器上执行同样一个任务,这就是备份任 务。