【张卡尔面对大数据 - 09】处理大数据的MapReduce模型框架(2)

标签:大数据服务器沟通存储分布式计算高性能计算算法Mapreduce超级计算机

访客:48852  发表于:2013-02-15 01:48:58

在本文的(1)中,主要介绍了MapReduce框架是一个目前主流的处理大数据的重要方法,通常用于在一组多台计算机上面进行集群计算和网格计算等硬件拓扑下的大规模的并行的分布式计算。我也提到过,MapReduce主要由Map和Reduce两个步骤组成。这里为了解释这个概念,同时也要避免太技术的细节,还是回到上一次的许多员工一起处理一本900页的书的例子。看看按照MapReduce的方法,可以做什么和如何具体做。

第一个是大数据人都知道例子,用来形象地介绍MapReduce方法。在这本书打印完毕后,我们想分析一下,这本书一共使用了哪些字,每个字被使用了多少次。

首先,把数字书稿交给Map小姐处理。她的任务蛮单调、简单,但是工作量很大,就是一字一字地读下去,每读到一个字,就将其记录到一个中间文件上。这个中间文件一般具体采用这么一个格式:(阅读到的字,1)。例如,Map小姐读到一个字“中”,就在文件中记录下(中,1)。接下来,她又读到一个字“国“,就又记录下来一笔(国,1)。其实很简单,前面表示阅读到的一个具体的字,后面的1表示这个字出现了一次。或者科班一点地说,前面是一个键,表示是哪一个;后边是一个值,表示相应的我们关心的数值。键与值构成一个键值对,共同表示我们感兴趣的一条记录。于是有一天, Map小姐努力地完成了工作,提交了一个很枯燥的表达字的使用的键值对的数据文件,里面罗列了这本书里面字的每一次出现。键值对里面,用字本身来作为键,用1这个值来表示出现1次这个值。右图是这个数据键值表的一段,表达了“中国中学生”这些字的出现。

接下来,由Reduce小姐接续处理Map小姐提交的键值表。同样,她的工作也是蛮单调、简单,但是工作量很大。她把文件里面出现的字及其这个字出现的总次数都记录下来。例如,上图的键值对会产出左图的结果。表示“中”这个字出现了两次。国这个字出现了一次,等等。 如此形成的文档,就是所期望的结果了。

下面这个示意图,是上面这个例子的一个更加接近实际流程的典型 MapReduce计算模式。图中,流
程首先读入数据,然后进行任务分解。图中将任务划分成3部分,分解交给3台电脑进行Map处理。然后对结果进行某种洗牌。比如,对于数字数的问题,可以进行按照出现字进行排序,使得同一个字的所有出现记录都聚集成串。例如,将前面的键值对重新排序成右图结果。这时候,很容易地在各台机器上面进行各自的相应的Reduce计算,得到有关的被处理字及其出现频率的结果。最后,汇总叠加各台电脑上面得出的结果,就得到了期盼的出现字统计数据。



这个数出现字的例子虽然简单,但是富有启示。

即使是这个简单例子,也确有很现实的实际应用。比如,统计QQ文字流量里面出现的字或者词,及其相应的出现次数。除夕晚上,一定出现许多网民谈论春晚的特定词。可以从网民谈论春晚的用词上面分析出春晚这个股票的行情走向。

同样还是这两位Map小姐和Reduce小姐,同样还是单调、简单而且工作量很大的工作方法,也可以去处理其它的问题。比如,要根据电信的电话流水记录来计算每个电话号码的拨出通话时间。Map小姐同样阅读电话流水记录,用(拨出电话号码,通话分钟数)这个键值对的格式来记录下每一个记录的拨出电话的号码和相应的通话时间,然后,Reduce小姐同样阅读Map小姐提供的文档,统计记录出每个拨出号码及其相应的汇总通话时间。

MapReduce算法的贡献之一,就是抽象出来这么一套虽然有点单调、简单而且工作量很大,但却是适用面很广的计算模式。而进行这种单调、简单和工作量很大的处理,正好是计算机的长处。

上面的MapReduce方法,同样可以支持并行处理。例如,假定现在Map和Reduce都是成员众多的小组了。那么原先的工作就可以拆分给各个小组成员去完成,速度大大地加快。前面举例的几个问题,都是非常天生可以并行化的。行话称为“令人不好意思的并行化”,也就是说,设计算法来解决这种天生并行化的问题,那是不好意思写论文的,实在太不智商挑战了。进行MapReduce这种类型的计算,过去内行人也有一种称呼,叫做暴力计算。或者我称之为霸王硬上弓。你财大气粗,你高官显贵。你当然可以不考虑效率,不考究细腻,你就是高举高打,人海战术,不讲章法,胜之不武。

结果“皇帝轮流做,明年到我家。也叫他搬出去,将天宫让给我!”。现代计算技术的发展,使得可以利用大量相对廉价的硬件和开源的软件,搭建大规模的分布式并行计算系统,解决迫切的大数据问题。MapReduce也是风头毕露,风情万种。印证了清朝赵翼的诗句:
     满眼生机转化钧,天工人巧日争新。
     预支五百年新意,到了千年又觉陈。
     李杜诗篇万口传,至今已觉不新鲜。
     江山代有才人出,各领风骚数百年。
这古人的诗词,好像就是在写大数据。
(待续)

=================================
【张卡尔面对大数据 - 08】处理大数据的MapReduce模型框架(1) / http://www.cio.com.cn/eyan/view/22305
【张卡尔面对大数据 - 07】麦肯锡大数据报告的读后感(2)/ http://www.cio.com.cn/eyan/view/21602
【张卡尔面对大数据 - 06】 维基一下大数据 (4)大数据的一些应用实例 / http://www.cio.com.cn/eyan/view/21557
【张卡尔面对大数据 - 05】 维基一下大数据 (3): 大数据的定义、应用与市场  / http://www.cio.com.cn/eyan/view/21298
【张卡尔面对大数据 - 04】 维基一下大数据 (2) / http://www.cio.com.cn/eyan/view/20845
【张卡尔面对大数据 - 03】 麦肯锡报告《大数据:创新、竞争力和生产力的下一个前线》的读后感(1)
/ http://www.cio.com.cn/eyan/view/20733

【张卡尔面对大数据 - 02】维基一下大数据(1)/ http://www.cio.com.cn/eyan/view/20661
【张卡尔面对大数据 - 01】大数据的大小/ http://www.cio.com.cn/eyan/view/20629

评论(2)

您可以在评论框内@您的好友一起参与讨论!

<--script type="text/javascript">BAIDU_CLB_fillSlot("927898");