MapReduce框架中的Shuffle机制
Shuffle
是map
和reduce
中间的数据调度过程,包括:缓存
、分区
、排序
等。
Shuffle
数据调度过程:
map task
处理hdfs
文件,调用map()
方法,map task
的collect thread
将map()
方法结果放入环形缓冲区
(默认大小100M
)- 当环形缓冲区达到
阈值(80%)
,将会触发溢出
操作,split thread
线程会调用HashPartitioner
或者自定义的分区规则
,对缓冲区内容进行分区
,区内文件内容有序。 - 当环形缓冲区再次达到阈值,会再次触发溢出操作,重复步骤2
map()
方法执行结束后,会生成一系列分区且区内有序
的溢出小文件。该溢出小文件不会直接交给reduce()
方法,会进行merge操作
,将溢出的小文件按分区
进行合并
,生成一个完整的分区且区内有序
的大文件。- 每个
reduce task
会获取每个map task
阶段最终结果文件的指定分区
文件内容,进行归并排序操作,按照key
排序,生成一个聚合组
。 - 每个
聚合组
调用一次reduce()
方法,key
为这一聚合组的相同key,values
是这一聚合组的所有value的迭代器。 - 生成最终结果文件。
Shuffle
数据调度过程(大图链接):
MapReduce框架中的Shuffle机制的更多相关文章
- 一文搞懂Java/Spring/Dubbo框架中的SPI机制
几天前和一位前辈聊起了Spring技术,大佬突然说了SPI,作为一个熟练使用Spring的民工,心中一紧,咱也不敢说不懂,而是在聊完之后赶紧打开了浏览器,开始的学习之路,所以也就有了这篇文章.废话不多 ...
- Android框架中的广播机制
一.广播通过Intent发送出去 // 定义广播的意图过滤器 private String action = "com.xxx.demo.Broadcast.STATUS_CHANGED&q ...
- 【Spark】Spark的Shuffle机制
MapReduce中的Shuffle 在MapReduce框架中,shuffle是连接Map和Reduce之间的桥梁,Map的输出要用到Reduce中必须经过shuffle这个环节,shuffle的性 ...
- Hadoop学习之路(二十三)MapReduce中的shuffle详解
概述 1.MapReduce 中,mapper 阶段处理的数据如何传递给 reducer 阶段,是 MapReduce 框架中 最关键的一个流程,这个流程就叫 Shuffle 2.Shuffle: 数 ...
- MapReduce(五) mapreduce的shuffle机制 与 Yarn
一.shuffle机制 1.概述 (1)MapReduce 中, map 阶段处理的数据如何传递给 reduce 阶段,是 MapReduce 框架中最关键的一个流程,这个流程就叫 Shuffle:( ...
- MapReduce框架原理--Shuffle机制
Shuffle机制 Mapreduce确保每个reducer的输入都是按键排序的.系统执行排序的过程(Map方法之后,Reduce方法之前的数据处理过程)称之为Shuffle. partition分区 ...
- Hadoop_18_MapRduce 内部的shuffle机制
1.Mapreduce的shuffle机制: Mapreduce中,map阶段处理的数据如何传递给Reduce阶段,是mapreduce框架中最关键的一个流程,这个流程就叫shuffle 将mapta ...
- 下一代Apache Hadoop MapReduce框架的架构
背景 随着集群规模和负载增加,MapReduce JobTracker在内存消耗,线程模型和扩展性/可靠性/性能方面暴露出了缺点,为此需要对它进行大整修. 需求 当我们对Hadoop MapReduc ...
- 经典 MapReduce框架(MRv1)
在 MapReduce 框架中,作业执行受两种类型的进程控制: 一个称为 JobTracker 的主要进程,它协调在集群上运行的所有作业,分配要在 TaskTracker 上运行的 map 和 red ...
随机推荐
- SpringSecurity remember-me功能
1./login .and().formLogin().loginPage("/user/login.html") //在successHandler中,使用response返回登 ...
- Qt第三方库libvlc-qt——ubuntu上编译、安装,测试
cmake 3.0编译安装(最低版本要求): sudo apt-get install ncurses-dev sudo apt-get install build-essential 下载cma ...
- EBS AP 创建会计科目失败
路径:应付款系统管理员/发票/发票 问题描述: 在AP发票界面录入一笔发票,验证发票,撤销发票,然后在AP发票界面的“活动”中创建会计科目,发现带出的并发请求“创建会计科目”正常跑完,但是通过“报表/ ...
- c 使用lua 示例
#include <stdio.h> #include <string.h> #include <lua.h> #include <lauxlib.h> ...
- 2.ibatis执行流程解析
以下仅为个人理解,如有问题,欢迎指正
- Struts2.3+Spring3.2+Hibernate4.2框架搭建
一.环境 SSH使用的版本:struts2.3.14.spring3.2.2.hibernate4.2.0 数据库:MYSQL tomcat版本:apache-tomcat-7.0.42 二.所需要导 ...
- Flyway:数据库版本迁移工具的介绍
目录 Flyway介绍 Flyway的工作模式 Flyway的使用场景 命令行 使用Maven或Gradle插件 migrate clean info validate baseline Java A ...
- debian系统安装vsftpd服务端和ftp客户端
一.服务器安装和配置 1.安装vsftpd.(此处切换到su权限下了.其它用户请使用sudo权限,没有sudo权限的看前面的教程进行安装) apt-get install vsftpd 2.配置vsf ...
- JavaScript(1):Base/Tips
目录 输出 全局变量 字符串 类型及转换 变量提升 严格模式 表单验证 (1) 输出 <!DOCTYPE html> <html> <body> <p> ...
- spring-boot集成5:集成jrebel实现热加载
Why Jrebel? 使用jrebel可以方便的实现spring-boot项目的热部署,直接reload更改的class,无需重启,提升开发效率. 1.安装jrebel插件 在idea中安装jreb ...