IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 【MapReduce】执行流程总结 -> 正文阅读

[大数据]【MapReduce】执行流程总结

MapReduce的执行流程

MapReduce一共可以分为两个阶段

Map阶段和Reduce阶段、但是有一部分也可以划分为三个阶段(Map、Shuffle、Reduce)

Map和Reduce阶段分属两台不同的主机,两者之间通过网络通信。

整个的执行流程可以如下图所示

?

一、Map阶段

Map负责分

1-1 MapTask阶段

读取HDFS上的文件,根据逻辑切片(这里的逻辑切片不是HDFS上面的BLOCK,而是MapReduce自己定制的切片)来启动线程(MapTask),默认情况下和BLOCK大小刚好一致是128M,有几个逻辑切片,就启动几个线程(MapTask)。如果是分布式的系统,那么启动的MapTask的主机可能会不一样。夸张一点的说,如果HDFS的的文件有三个BLOCK,存放三个BLOCK的地址可能会不一样(假如分别存放在上海、天津、武汉)会启动3个MapTask线程,根据网络拓扑会就近原则寻找主机计算。

MapTask中的Mapper会将K1,V1变成K2,V2,然后进入shuffle阶段(Map段的shuffle)

1-2 Map端Shuffle

1-2-1 分区

对Mapper中返回的K2、V2按照业务需求进行打编号,编号相同的K2、V2最终会存到同一个文件(Reduce)里。

1-2-1-1 环形缓冲区

已经打好编号的K2、V2进入到了环形缓冲区中,缓冲区就是一片内存,特点是一个字节数组byte【】,它可以重复的去存数据

大小是:100M,可以在配置里面设置,溢出阈值比例80%,如果达到80%,当他达到80%,继续往后进行继续的传递

为什么可以重复存数据呢

//非环形缓冲区
byte[] buffer = new byte[]
 ? ?for(){
 ? ?int index = 0;
 ? ?buffer[index++] = 0
 ? ?buffer[1] = 1
 ?  }
 //
byte[] buffer = new byte[]
 ? ?for(){
 ? ?int index = 0;
 ? ?buffer[index++] = 0
 ? ?index = index%buffer.length;
 ? ? ? ?//index 100,99...0,1,2

为什么会有环形缓冲区

产生的K2,V2的速度会大于排序排列的速度,为了去平复这个速度差,环形缓冲区就起到平衡速度差的作用,

1-2-2 排序

排序(快排),快排之后会形成很多的小文件(临时文件,全在硬盘上),这也就是MapReduce被人诟病所在。

产生的小文件再进行一次合并(Merge)

1-2-3 Combiner

每一个 map 都可能会产生大量的本地输出,Combiner 的作用就是对 map 端的输出先做一次合并,以减少在 map 和 reduce 节点之间的数据传输量,以提高网络IO 性能,是 MapReduce 的一种优化手段之一

·因为合并之前的小文件是有序的,但是在合并之后、文件中的数据可能又是无序的、如果写了Combiner的话,会进行一次排序,一般的话Combiner是没有的,所以在合并小文件之后又会进行一次的排序(归并排序)。会生成临时文件,等着Reduce的拉取

1-2-3-1 归并排序

将快排后局部有序的数据再次排序,效率很快。

二、Reduce阶段

Reduce负责合。

通过网络会拉取Map端的Shuffle生成的同一分区的临时文件,放入Reduce缓冲区。缓冲区也会溢出,溢出好多小文件,会对小文件进行Merge

2-1 分组(Reduce端Shuffle)

会根据归并排序将相同Key的value放入同一组,生成K2[V2]

2-2 ReduceTask

会将生成好的K2[V2]根据业务需求变成K3,V3。K3,V3会输出到结果文件(有可能是空文件)。

生成文件后,整个MapReuce执行过程就结束了。

三、总结

MapReduce首先会读取我们HDFS上面的目标数据,进入Map阶段,Map阶段执行完会进入Shuffle阶段,进行分区、排序、Combiner、分组,结束后会进入到Reduce阶段、Reduce会拉取数据给ReduceTask进行处理、最终会把数据写入到结果文件。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-30 15:41:10  更:2021-11-30 15:43:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:14:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码