趋势网 > 资讯 > 正文
版权归原作者所有 侵权敬请通知移除
摘要:map()函数把输入数据进行切割(比如分为M块)之后,分布到不同的机器上执行(例如前面介绍的单词统计例子,可以把每一个文件分配到一台机器上执行)。Reduce()函数通过产生的键key(例如可以根据某种分区函数(比如hash(key) mod R),R的值和分区函数都是由用户指定)将map()的结果集分成R块,然后分别在R台机器上执行。
菲律宾一载350多人渡轮沉没
网友:怎么会突然沉没啊,原因是什么。
贝克汉姆遭大儿子控诉
网友:望子成龙的爹,控制欲强的妈,婆媳争夺废柴妈宝男的故事。
儿子回应怒吼癌症妈妈碰瓷爆火
网友:幸好儿子的三观正,也得到了网友的回报。
多品牌紧急删除张雨绮相关代言内容
网友:你猜为什么品牌要紧急解约。
7旬夫妻开老头乐闯灯被撞索赔70万
网友:没上路资格还闯红灯,竟然不是全责?
因给孩子涂药争吵男子用砖砸死岳母
网友:这不就给上门媳妇演示一下被欺负的后果吗。

趋势网讯:

map()函数把输入数据进行切割(比如分为M块)之后,分布到不同的机器上执行(例如前面介绍的单词统计例子,可以把每一个文件分配到一台机器上执行)。Reduce()函数通过产生的键key(例如可以根据某种分区函数(比如hash(key) mod R),R的值和分区函数都是由用户指定)将map()的结果集分成R块,然后分别在R台机器上执行。

图1是MapReduce算法示意图。当用户程序调用MapReduce函数时,就会引起如下的操作。

,互联网,详解MapReduce算法及视图

图1

(1) MapReduce函数库首先把输入文件分成M块,每块大概16MB到64MB。接着在集群的机器上执行处理程序。

如图2.14所示,MapReduce算法运行过程中有一个主控程序,称为master。主控程序会产生很多作业程序,称为worker。并且把M个map任务和R个reduce任务分配给这些worker,让它们去完成。

(2) 被分配了map任务的worker读取并处理相关的输入(这里的输入是指已经被切割的输入小块splite)。它处理输入的数据,并且 将分析出的键/值(key/value)对传递给用户定义的reduce()函数。map()函数产生的中间结果键/值(key/value)对暂时缓冲 到内存。

(3) map()函数缓冲到内存的中间结果将被定时刷写到本地硬盘,这些数据通过分区函数分成R个区。这些中间结果在本地硬盘的位置信息将被发送回master,然后这个master负责把这些位置信息传送给reduce()函数的worker。

(4) 当master通知了reduce()函数的worker关于中间键/值(key/value)对的位置时,worker调用远程方法 从map()函数的worker机器的本地硬盘上读取缓冲的中间数据。当reduce()函数的worker读取到了所有的中间数据,它就使用这些中间数 据的键(key)进行排序,这样可以使得相同键(key)的值都在一起。如果中间结果集太大了,那么就需要使用外排序。

(5) reduce()函数的worker根据每一个中间结果的键(key)来遍历排序后的数据,并且把键(key)和相关的中间结果值(value)集合传递给reduce()函数。reduce()函数的worker最终把输出结果存放在master机器的一个输出文件中。

(6) 当所有的map任务和reduce任务都已经完成后,master激活用户程序。在这时,MapReduce返回用户程序的调用点。

(7) 当以上步骤成功结束以后,MapReduce的执行数据存放在总计R个输出文件中(每个输出文件都是由reduce任务产生的,这些文 件名是用户指定的)。通常,用户不需要将这R个输出文件合并到一个文件,他们通常把这些文件作为输入传递给另一个MapReduce调用,或者用另一个分 布式应用来处理这些文件,并且这些分布式应用把这些文件看成为输入文件由于分区(partition)成为的多个块文件。

男子把降压药掰开吃30分钟后昏迷
网友:既然不能掰开吃,为什么要有对半槽。
网友爆料印度人广州街头如厕
网友:好没礼貌的一群人,太离谱了,真没素质。
六年级男生一脚踹飞7岁小男孩
网友:就是怕这样,所以我儿子我不让一个人下楼,我都陪同。
河南开封一寺院大殿摆放物品被盗
网友:寺庙里的东西,她拿证明她需要,一切因果她自己应。
郑州一26岁女子失联5日仍未找到
网友:到处都是监控摄像头,手机可以通过技术手段精准定位,一个大活人怎么还能失联?
成都机器人碰到老人双双倒地不起
网友:又到了道德感和笑点打架的时间。
  感谢各大网址导航推荐本站: