问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

简单搞定Shuffle机制运行原理

发布网友 发布时间:2023-04-10 09:06

我来回答

1个回答

热心网友 时间:2023-09-14 16:22

概述

1)maprece中,map阶段处理的数据如何传递给rece阶段,是maprece框架中最关键的一个流程,这个流程就叫shuffle;

2)shuffle: 洗牌、发牌(核心机制:数据分区、排序、缓存);

3)具体来说:就是将maptask输出的处理结果数据,分发给recetask,并在分发的过程中,对数据按key进行了分区和排序。

2.4.2 Shuffle 结构

Shuffle缓存流程:

shuffle是MR处理流程中的一个过程,它的每一个处理步骤是分散在各个map task和rece task节点上完成的。

2.4.3 partition分区

如果receTask的数量> getPartition的结果数,则会多产生几个空的输出文件part-r-000xx;

如果1

如果receTask的数量=1,则不管mapTask端输出多少个分区文件,最终结果都交给这一个receTask,最终也就只会产生一个结果文件 part-r-00000;

例如:假设自定义分区数为5,则

(1)job.setNumReceTasks(1);会正常运行,只不过会产生一个输出文件

(2)job.setNumReceTasks(2);会报错

(3)job.setNumReceTasks(6);大于5,程序会正常运行,会产生空文件

2.4.5 Shuffle 运行机制

2)流程详解

上面的流程是整个maprece最全工作流程,但是shuffle过程只是从第7步开始到第16步结束,具体shuffle过程详解,如下:

1)maptask收集我们的map()方法输出的kv对,放到内存缓冲区中

2)从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件

3)多个溢出文件会被合并成大的溢出文件

4)在溢出过程中,及合并的过程中,都要调用partitoner进行分组和针对key进行排序

5)recetask根据自己的分区号,去各个maptask机器上取相应的结果分区数据

6)recetask会取到同一个分区的来自不同maptask的结果文件,recetask会将这些文件再进行合并(归并排序)

7)合并成大文件后,shuffle的过程也就结束了,后面进入recetask的逻辑运算过程(从文件中取出一个一个的键值对group,调用用户自定义的rece()方法)

3)注意

Shuffle中的缓冲区大小会影响到maprece程序的执行效率,原则上说,缓冲区越大,磁盘io的次数越少,执行速度就越快。

缓冲区的大小可以通过参数调整,参数:io.sort.mb 默认100M

2.4.6 Combiner 合并

1)combiner是MR程序中Mapper和Recer之外的一种组件

2)combiner组件的父类就是Recer

3)combiner和recer的区别在于运行的位置:

Combiner是在每一个maptask所在的节点运行

Recer是接收全局所有Mapper的输出结果;

4)combiner的意义就是对每一个maptask的输出进行局部汇总,以减小网络传输量

6)combiner能够应用的前提是不能影响最终的业务逻辑,而且,combiner的输出kv应该跟recer的输入kv类型要对应起来

Mapper
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
“定是李八百”的出处是哪里 李八百六种说法 李仙指道教传说中仙人 李八百 学习劈叉,每次静压压腿多久 六哥救的叫花子是谁的孩子 大智慧江恩三日图源码,找了无数公式,想在大智慧里用 ,一直没找到_百度... 测试类工具有哪些 服务器压力测试需要用的8种工具 8岁的小孩能玩什么游戏8岁男童和父母玩些什么互动游戏 摩尔庄园手游冲浪板凯文在哪里现在摩尔庄园凯文在哪 vivoz5怎么设置闹钟? 和苹果4s一样大小的手机 梦见在床上大蛇生小蛇的预兆 梦见女人大蛇生小蛇的预兆 梦见大蛇生了一堆小蛇的预兆 怎么申请注册新账号? 怎么注册新的 申请一个新的微信帐号如何操作 带菌的解释 梦见孩子被别的小孩欺负的预兆 梦见跟学长在一起 梦见敬佩的学长没被打的预兆 如何打出带拼音的文字? 10万左右家轿怎么选?长安逸达对比大众朗逸和日产轩逸 比亚迪秦PLUS深度对比新款日产轩逸,谁的产品力更强 新款日产轩逸与秦PLUSDM-i多维度对比,该如何选? 搭载第二代e-POWER系统 新款轩逸能否重回销量冠军? 全新轩逸家族上市:500万个车主,和东风日产“双向奔赴” 全新轩逸焕新上市,家轿王者,从容不迫的底气在哪? 500万成就解锁!全新轩逸家族焕新上市销量三冠王实力如何 在Internet Explorer浏览器的默认设置中,起始主页是指什么?如何改变起始主页? shuffle阶段 爱思助手加密忘记密码 如何推广地方信息门户类网站? rog手机散热器为什么不通用 福建省高中排行榜20强 福建高中排名一览表 怎么卸载一键还原,一键还原没按好用不了 我按装了一键还原之后 看他不好使我就用控制面板卸载了,但他还在,应该怎么卸载啊?急!急!急! 梦见分手的老婆 梦见老鳖咬我的预兆 做梦梦见被甲鱼咬我预示着什么 梦见被鳖咬并流血 我有两个,可以关联吗? 如何将两个关联起来? 梦见天空冒黑烟的预兆 如何将两个关联? 红米Note4X和vivoX9买哪个好 小米Note4x跟vvivo x9s手机选那个处理 以下几款手机哪款值得买?红米note4x,华为畅享7plus,oppo A57,vivo y66。 红米Note4x好点还是小米5C好???红米Note4x跟ViVO和oPPo哪个好点?