MapReduce的shuffle过程详解
[学习笔记]
结果分析:
shuffle的英文是洗牌,混洗的意思,洗牌就是越乱越好的意思。当在集群的情况下是这样的,假如有三个map节点和三个reduce节点,一号reduce节点的数据会来自于三个map节点,而不是就来自于一号map节点。所以说它们的数据会混合,路线会交叉, 3叉3。想象一下,像不像洗牌? 马克-to-win @ 马克java社区:shuffle在MapReduce中是指map输出后到reduce接收前,按下面的官方shuffle图:具体可以分为map端和reduce端两个部分。在最开始,假设我们就提交一个大文件,MapReduce会对要处理的大文件数据进行分片(split)操作放到多台机器的集群里,(想象一个搬走大山的大活给一个师的人马,是不是要把人,部署一圈,展开,一人干一块儿,现在是一样的道理。现在你要摆弄一个1.5T的文件, 需要先把它切开, 分配到不同机器)为每一个分片分配一个MapTask任务,接下来会对每一个分片中的每一行数据进行处理,得到键值对(key,value),其中key为偏移量,value为一行的内容。准备给咱们的自己的map方法。执行完咱自己的map方法,便进入shuffle阶段。马克-to-win @ 马克java社区:为提高效率,mapreduce会把我们的写出的结果先存储到map节点的“环形内存缓冲区”(不深入探讨),当写入的数据量达到预先设置的阙值后(默认80%)便会启动溢出(spill)线程将缓冲区中的那部分数据溢出写(spill)到磁盘的临时文件中,可能会产生很多,并在写入前根据key进行排序(sort)和合并(combine,本章不讨论)。
文章转载自原文: https://blog.csdn.net/qq_44594249/article/details/95864731
MapReduce的shuffle过程详解的更多相关文章
- MapReduce:Shuffle过程详解
1.Map任务处理 1.1 读取HDFS中的文件.每一行解析成一个<k,v>.每一个键值对调用一次map函数. <0,hello you> & ...
- Hadoop Mapreduce的shuffle过程详解
1.map task读取数据时默认调用TextInputFormat的成员RecoreReader,RecoreReader调用自己的read()方法,进行逐行读取,返回一个key.value; 2. ...
- hadoop: Shuffle过程详解 (转载)
原文地址:http://langyu.iteye.com/blog/992916 另一篇博文:http://www.cnblogs.com/gwgyk/p/3997849.html Shuffle过程 ...
- Mapreduce中maptask过程详解
一.Maptask并行度与决定机制 1.一个job任务的map阶段的并行度默认是由该任务的大小决定的: 2.一个split切分分配一个maprask来并行处理: 3.默认情况下,split切分的大小等 ...
- Shuffle过程详解
- Hadoop Mapreduce分区、分组、二次排序过程详解[转]
原文地址:Hadoop Mapreduce分区.分组.二次排序过程详解[转]作者: 徐海蛟 教学用途 1.MapReduce中数据流动 (1)最简单的过程: map - reduce (2) ...
- MapReduce过程详解(基于hadoop2.x架构)
本文基于hadoop2.x架构详细描述了mapreduce的执行过程,包括partition,combiner,shuffle等组件以及yarn平台与mapreduce编程模型的关系. mapredu ...
- Hadoop MapReduce执行过程详解(带hadoop例子)
https://my.oschina.net/itblog/blog/275294 摘要: 本文通过一个例子,详细介绍Hadoop 的 MapReduce过程. 分析MapReduce执行过程 Map ...
- Hadoop学习之Mapreduce执行过程详解
一.MapReduce执行过程 MapReduce运行时,首先通过Map读取HDFS中的数据,然后经过拆分,将每个文件中的每行数据分拆成键值对,最后输出作为Reduce的输入,大体执行流程如下图所示: ...
随机推荐
- IP数据报首部checksum的计算
IP数据报首部checksum的计算 2009年02月22日 23:23:00 zhangyang0402 阅读数:10897 一.首先区别下面两个概念:(1)one's complement:正 ...
- 【转载】Hadoop集群各部分常用端口号
hadoop集群的各部分一般都会使用到多个端口,有些是daemon之间进行交互之用,有些是用于RPC访问以及HTTP访问.而随着hadoop周边组件的增多,完全记不住哪个端口对应哪个应用,特收集记录如 ...
- getLocation需要在app.json中声明permission字段,解决办法
具体开发方法如下: 在 app.json 里面增加 permission 属性配置(小游戏需在game.json中配置): "permission": { "scope. ...
- 爬虫前提——正则表达式语法以及在Python中的使用
正则表达式是用来处理字符串的强大工具,他并不是某种编程云. 正则表达式拥有独立的承受力引擎,不管什么编程语言,正则表达式的语法都是一样的. 正则表达式的匹配过程 1.一次拿出表达式和文本中的字符比较. ...
- 走进JavaWeb技术世界12:从手动编译打包到项目构建工具Maven
小李的Build之路(上) 转自: 刘欣 码农翻身 2016-07-10 摘要:手工Build的烦恼要不是为了和女朋友留在一个城市,小李肯定去北上广奋斗去了.现在他只能留在这个2.5线城市,进入这家软 ...
- git 和conding.net 超详细超简单安装
在做一下操作前,希望你能知道 1.什么是git? 可以参考https://blog.csdn.net/a909301740/article/details/81636662 如果还想多了解一下还可以参 ...
- Linux中强大的top命令
top命令算是最直观.好用的查看服务器负载的命令了.它实时动态刷新显示服务器状态信息,且可以通过交互式命令自定义显示内容,非常强大. 在终端中输入top,回车后会显示如下内容: top - 21: ...
- Java 签名(SHA1WithRSA、SHA256WithRSA、SHA256withECDSA)
RSA1.RSA256 签名 public static String MakeSign(String Data) { try { byte[] data = Data.getBytes(); byt ...
- Thrift: Scalable Cross-Language Services Implementation
http://thrift.apache.org/static/files/thrift-20070401.pdf
- FlowLayout实现
package com.loaderman.customviewdemo; import android.content.Context; import android.util.AttributeS ...