Mapreduce详解Shuffle过程

引自[https://www.iteye.com/blog/langyu-992916]
shuffle的意义有三点:
1.把map task端的数据完整传输到reduce task端
2.减少不必要的宽带消耗
3.减少磁盘IO消耗

首先把Shuffle理解为map的shuffle和reduce的shuffle
map task端的shuffle可以分为以下几个步骤:
1.map,对key进行value赋值
2.partitioner,对于不同的key值分配不同的reduce task端,个人理解key/value以及分哪个reduce信息写在一起。
3.spill,写入内存缓冲区后,会造成以溢写,写入磁盘
4.conbiner,溢写文件会相同的key做合并操作
5.merge,对多个溢写文件进行合并,最后每个map task端只有一个溢写文件

reduce task端的shuffle可以分为以下几个步骤:
1.copy,首先根据jobtracker获取map task数据。从不同map task端copy数据过来。
2.merge,将不同map task端的数据合并起来,作为reduce端的输入
3,reduce,得到最终结果

这次回顾,能更深理解其中过程,但仍然觉得有部分地方理解错误,需要继续对其学习。
后面将对spark进行回顾,加强学习。
目前Hadoop中的mapreduce更多已被spark替代。

原文地址:https://www.cnblogs.com/chenshaowei/p/12335110.html

时间: 2024-10-31 02:57:10

Mapreduce详解Shuffle过程的相关文章

MapReduce:详解Shuffle过程

MapReduce:详解Shuffle过程[转] 博客分类: mapreduce MapreduceITeye数据结构多线程Hadoop Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解MapReduce, Shuffle是必须要了解的.我看过很多相关的资料,但每次看完都云里雾里的绕着,很难理清大致的逻辑,反而越搅越混.前段时间在做MapReduce job 性能调优的工作,需要深入代码研究MapReduce的运行机制,这才对Shuffle探了个究竟.考虑到之前我在

[转]MapReduce:详解Shuffle过程

Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解MapReduce, Shuffle是必须要了解的.我看过很多相关的资料,但每次看完都云里雾里的绕着,很难理清大致的逻辑,反而越搅越混.前段时间在做MapReduce job 性能调优的工作,需要深入代码研究MapReduce的运行机制,这才对Shuffle探了个究竟.考虑到之前我在看相关资料而看不懂时很恼火,所以在这里我尽最大的可能试着把Shuffle说清楚,让每一位想了解它原理的朋友都能有所收获.如果你对这篇文章有

【转】MapReduce:详解Shuffle过程

原文:http://langyu.iteye.com/blog/992916  Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解MapReduce, Shuffle是必须要了解的.我看过很多相关的资料,但每次看完都云里雾里的绕着,很难理清大致的逻辑,反而越搅越混.前段时间在做MapReduce job 性能调优的工作,需要深入代码研究MapReduce的运行机制,这才对Shuffle探了个究竟.考虑到之前我在看相关资料而看不懂时很恼火,所以在这里我尽最大的可能试着把

【转】MapReduce:详解Shuffle过程

——转自:{http://langyu.iteye.com/blog/992916} Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解MapReduce, Shuffle是必须要了解的.我看过很多相关的资料,但每次看完都云里雾里的绕着,很难理清大致的逻辑,反而越搅越混.前段时间在做MapReduce job 性能调优的工作,需要深入代码研究MapReduce的运行机制,这才对Shuffle探了个究竟.考虑到之前我在看相关资料而看不懂时很恼火,所以在这里我尽最大的可能

MapReduce:详解Shuffle过程

Shuffle过程,也称Copy阶段.reduce task从各个map task上远程拷贝一片数据,并针对某一片数据,如果其大小超过一定的阀值,则写到磁盘上,否则直接放到内存中. 官方的Shuffle过程如上图所示,不过细节有错乱,官方图并没有说明partition.sort和combiner具体作用于哪个阶段. 注意:Shuffle过程是贯穿于map和reduce两个过程的! Hadoop的集群环境,大部分的map task和reduce task是执行在不同的节点上的,那么reduce就要

详解shuffle过程(转载)

http://langyu.iteye.com/blog/992916 shuffle本意是洗牌的意思.在mapreduce中描述的是怎么将map task 的输出结果有效的传送到reduce task端. 在Hadoop这样的集群环境中,大部分map task与reduce task的执行是在不同的节点上.当然很多情况下Reduce执行时需要跨节点去拉取其它节点上的map task结果.如果集群正在运行的job有很多,那么task的正常执行对集群内部的网络资源消耗会很严重.这种网络消耗是正常的

Hadoop_10_shuffle02_详解Shuffle过程【来源网络】推荐更为详细

网址:http://www.cnblogs.com/felixzh/p/4680808.html Shuffle过程,也称Copy阶段.reduce task从各个map task上远程拷贝一片数据,并针对某一片数据,如果其大小超过一定的阀值,则写到磁盘上,否则直接放到内存中. 官方的Shuffle过程如上图所示,不过细节有错乱,官方图并没有说明partition.sort和combiner具体作用于哪个阶段. 注意:Shuffle过程是贯穿于map和reduce两个过程的! Hadoop的集群

hadoop之mapreduce详解(优化篇)

一.概述 优化前我们需要知道hadoop适合干什么活,适合什么场景,在工作中,我们要知道业务是怎样的,能才结合平台资源达到最有优化.除了这些我们当然还要知道mapreduce的执行过程,比如从文件的读取,map处理,shuffle过程,reduce处理,文件的输出或者存储.在工作中,往往平台的参数都是固定的,不可能为了某一个作业去修改整个平台的参数,所以在作业的执行过程中,需要对作业进行单独的设定,这样既不会对其他作业产生影响,也能很好的提高作业的性能,提高优化的灵活性. 现在回顾下hadoop

Hadoop之Mapreduce详解

1. 什么是Mapreduce  Mapreduce是一个分布式运算程序的编程框架,是用户开发"基于hadoop的数据分析应用"的核心框架: Mapreduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序, 并发运行在一个hadoop集群上: 2.Mapreduce框架结构及核心运行机制 2.1.一个完整的mapreduce程序在分布式运行时有三类实例进程: 1.MRAppMaster:负责整个程序的过程调度及状态协调 2.mapTask:负责map阶