在hadoop技术体系MapReduce中,Shuffle是比较重要的一个环节。对理解好Shuffle对往后的MapReduce调优将起到非常大的作用。

以下是我个人对MapReduce Shuffle的一些理解。

map task--数据格式化
程序会根据InputFormat将输入文件分割成splits,每个split会作为一个map task的输入,每个map task会有一个内存缓冲区,
输入数据经过map阶段处理后的中间结果会写入内存缓冲区,并且决定数据写入到哪个partitioner(分区),当写入的数据到达内存缓冲
区的的阀值(默认是0.8),会启动一个线程将内存中的数据溢写入磁盘,同时不影响map中间结果继续写入缓冲区。在溢写过程中,
会对key进行排序,如果中间结果比较大,会形成多个溢写文件,最后的缓冲区数据也会全部溢写入磁盘形成一个溢写
文件(最少有一个溢写文件),如果是多个溢写文件,则最后合并所有的溢写文件为一个文件。

reduce task--数据计算
当所有的map task完成后,每个map task会形成一个最终文件,并且该文件按区划分。reduce任务启动之前,一个map task完成后,
就会启动线程来拉取map结果数据到相应的reduce task,不断地合并数据,为reduce的数据输入做准备,当所有的map tesk完成后,
数据也拉取合并完毕后,reduce task 启动,最终将输出输出结果存入HDFS上。

转载于:https://www.cnblogs.com/enots/p/9540470.html

Map Reduce Shuffle相关推荐

  1. MapReduce核心map reduce shuffle (spill sort partition merge)详解

    Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解MapReduce, Shuffle是必须要了解的.Shuffle的正常意思是洗牌或弄乱,可能大家更熟悉的是Java AP ...

  2. Hadoop Map/Reduce教程

    Hadoop Map/Reduce教程 目的     先决条件     概述     输入与输出     例子:WordCount v1.0         源代码         用法        ...

  3. 一步一步跟我学习hadoop(5)----hadoop Map/Reduce教程(2)

    Map/Reduce用户界面 本节为用户採用框架要面对的各个环节提供了具体的描写叙述,旨在与帮助用户对实现.配置和调优进行具体的设置.然而,开发时候还是要相应着API进行相关操作. 首先我们须要了解M ...

  4. 大数据Map Reduce 和 MPP数据库 的区别

    总结来说MR是一个编程模型,你可以用MR这个编程模型自己实现MPP所做的事. MPP则是一种SQL的计算引擎. "MR分而治之的策略" 和 "Massively Para ...

  5. HIVE User Guide 总结之四HIVE 的MAP/REDUCE、注意点

    7.HIVE 的MAP/REDUCE 7.1 jion 对于 JOIN 操作: INSERT OVERWRITE TABLE pv_users SELECT pv.pageid, u.age FROM ...

  6. [ZZ]Map/Reduce hadoop 细节

    转自:Venus神庙原文:http://www.cnblogs.com/duguguiyu/archive/2009/02/28/1400278.html 分布式计算(Map/Reduce) 分布式计 ...

  7. Hadoop简介(1):什么是Map/Reduce

    看这篇文章请出去跑两圈,然后泡一壶茶,边喝茶,边看,看完你就对hadoop整体有所了解了. Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Red ...

  8. 用通俗易懂的大白话讲解Map/Reduce原理

    Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰 ...

  9. python内置函数map reduce filter详解,面试必备知识

    面试时候经常会考到 map reduce filter 这三个内置函数的使用 map() 函数 map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调 ...

最新文章

  1. C++11 类型后置语法
  2. 【TypeScript】通过node-cmd使用代码,执行cmd命令行
  3. 易语言取c盘文件夹中的文件被占用,win7系统怎么快速找出文件被什么进程占用|win7解除文件占用的方法...
  4. content属性的4种用途
  5. Node 之NPM介绍
  6. (14)FPGA触发器与寄存器区别
  7. 二十四节气插画素材,每一张都带你如感
  8. spring boot demo( 获取一个RESTful web service)
  9. Shell 脚本进程并发进程数控制
  10. spine怎么取消版本升级_设置 - Spine用户指南
  11. 华硕笔记本进bios按哪个键 华硕手提电脑怎么进bios设置
  12. python中空格怎么打_191012 python3关于空格打印、赋值、+=符号的小坑
  13. 云计算—重塑IT产业格局
  14. cesium.js官网教程之中文版本~~~~第一篇
  15. HTTP协议以及返回状态码
  16. kali linux怎么安装无线网卡驱动,Kali Linux 安装BCM43142网卡驱动
  17. 教育培训行业现状分析
  18. 三大世界级难题,等你来解答
  19. 如何确定企业是否需要推行CMMI?
  20. 【每日新闻】2017年亚马逊研发投入排世界第一,超过华为、BAT 总和 | 数人云宣布与UMCloud合并...

热门文章

  1. AI一分钟 | 传许家印已投资贾跃亭FF;腾讯将发布可接收微信的智能音箱;阿里确认研发自动驾驶技术
  2. 我们的解决方案:日志系统
  3. 面霸:Redis 为什么这么快?
  4. Elasticsearch索引生命周期管理方案
  5. 字节跳动一面:i++ 是线程安全的吗?
  6. Paxos、Raft不是一致性算法/协议?
  7. Springboot启动原理解析
  8. 40万总奖金!院士指导,顶级云服务免费用!2021全球高性能云计算创新大赛来了...
  9. 北大华为鹏城联合首次提出视觉 Transformer 后量化算法!
  10. 最新汇总!这些高校已确定开学时间!