干货丨MapReduce的工作流程是怎样的?

2023-05-16

8533f8427998ca97b41e3a3b72393d86.gif

MapReduce编程模型开发简单且功能强大,专门为并行处理大规模数据量而设计,接下来,我们通过一张图来描述MapReduce的工作过程,如下图所示。

2b91bc1aa7e81e0e404cc4492010ff8b.png

在图中,MapReduce的工作流程大致可以分为5步,具体如下:

1.分片、格式化数据源

输入Map阶段的数据源,必须经过分片和格式化操作。

分片操作:指的是将源文件划分为大小相等的小数据块(Hadoop2.x中默认128M),也就是分片(split),Hadoop会为每一个分片构建一个Map任务,并由该任务运行自定义的map()函数,从而处理分片里的每一条记录;

格式化操作:将划分好的分片(split)格式化为键值对<key,value>形式的数据,其中,key代表偏移量,value代表每一行内容。

2.执行MapTask

每个Map任务都有一个内存缓冲区(缓冲区大小100M),输入的分片(split)数据经过Map任务处理后的中间结果,会写入内存缓冲区中。如果写入的数据达到内存缓冲的阀值(80M),会启动一个线程将内存中的溢出数据写入磁盘,同时不影响map中间结果继续写入缓冲区。

在溢写过程中,MapReduce框架会对Key进行排序,如果中间结果比较大,会形成多个溢写文件,最后的缓冲区数据也会全部溢写入磁盘形成一个溢写文件,如果是多个溢写文件,则最后合并所有的溢写文件为一个文件。

3.执行Shuffle过程

MapReduce工作过程中,map阶段处理的数据如何传递给Reduce阶段,这是MapReduce框架中关键的一个过程,这个过程叫做Shuffle。

Shuffle会将MapTask输出的处理结果数据,分发给ReduceTask,并在分发的过程中,对数据按key进行分区和排序。

4.执行ReduceTask

输入ReduceTask的数据流是<key,{value list}>形式,用户可以自定义reduce()方法进行逻辑处理,最终以<key,value>的形式输出。

5.写入文件

MapReduce框架会自动把ReduceTask生成的<key,value>传入OutputFormat的write方法,实现文件的写入操作。

569222747031d715fad1347e8acd86ba.png485561f8a668418b32acbd11e0ea9658.png97a0294862a27ce811d8dbf11d09c95e.png

以上就是播妞为大家分享的干货内容

希望对你有所帮助

 黑马程序员 

累计培养30余万名优质IT人才

8大学科火热报名中

基础班仅需 28 元,扫码免费咨询

960a9c5204100d8b3aba5eeff25927ad.png

线上课程咨询联系播妞(微信:heiniu526)

207daece2d4b5055ed60c86127258b66.png

丨热门教程资源免费领丨

回复【领取资源】领《黑马8学科汇总教程》

回复【1026】领《SpringBoot2全套》

回复【瑞吉外卖】领《瑞吉外卖项目教程》

回复【mysql1】领《Mysql入门到精通》

回复【毕业设计】领《Java毕业设计项目》

更多教程加播妞领取:heiniu526

(在下方公众号回复对应关键词,即可领取哦)

↓↓↓

8fd2d9366ac82bbe2929e7b05556f499.gif

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

干货丨MapReduce的工作流程是怎样的? 的相关文章

  • [SIGCOMM2016]Robotron: Top-down Network Management at Facebook Scale

    Facebook面临的问题 分布式配置 xff1a 有很多配置需要在不同的系统中更改 多个Domain xff1a Facebook需要管理网络的网络版本控制 xff1a 需要管理不同版本的网络同时运行 依赖 xff1a 将新路由器添加到
  • Adversary Attack(对抗攻击)论文阅读笔记

    引言 最近开始学习Adversary Attack 对抗攻击 有关的内容 xff0c 于是便从Ian GoodFollow的论文开始读起 xff0c 后面每篇博客都会列举三篇的阅读笔记 xff0c 来记录学习的经历 如果有讲得不到位或者您有
  • 海睿思分享 | 浅谈数仓指标体系管理

    什么是指标 xff1f 指标 xff0c 是用于衡量事物发展程度的单位或方法 xff0c 也常被称作度量 xff0c 通常情况下也是报表统计的字段 xff0c 例如 xff1a 人口数 营业收入 用户数 利润率 成功率 失败率 覆盖率等 1
  • PyTorch 实战:计算 Wasserstein 距离

    xff08 给 Python开发者 加星标 xff0c 提升Python技能 xff09 编译 xff1a 机器之心 xff0c 作者 xff1a Daniel Daza 最优传输理论及 Wasserstein 距离是很多读者都希望了解的基
  • Java8 Lambda表达式教程

    1 什么是 表达式 表达式本质上是一个匿名方法 让我们来看下面这个例子 xff1a public int add int x int y return x 43 y 转成 表达式后是这个样子 xff1a int x int y gt x 4
  • VNC连接失败:The connection was refused by the host computer

    解决方法 xff1a 1 用Xshell登陆自己的服务器 2 在命令行中输入vncserver 命令行中出现 xff1a Warning optimal6 2 is taken because of tmp X2 lock Remove t
  • ACM会用到的一点数学知识

    1 费马小定理 xff1a a p mod p 61 a p为素数 xff0c 且a不是p的倍数 2 数n的约数个数 xff1a n分解因数为p1 s1 p2 s2 pm sm 则约数个数为 s1 43 1 s2 43 1 sm 43 1
  • SVN的Status总结

    执行SVN up和svn merge等命令出现在首位置的各字母含义如下 xff1a 无修改 A 新增 C 冲突 D 删除 G 合并 I 忽略 M 改变 R 替换 X 未纳入版本控制 xff0c 但被外部定义所用 未纳入版本控制 该项目已遗失
  • linux 下中文编码转换问题

    目标 xff1a 接收网络传过来的字节序 xff0c 转换字符串 全英文的情况下直接保存string即可 xff0c 带中文的情况试了好久故做如下记录 1 首先确认gcc 应该是utf 8的格式来存储字符串的 通过cmake 加入 fexe
  • Go 语言汇编快速入门

    在 Go 的源码中包含大量汇编语句 xff0c 最优秀的示例代码位于 math big runtime 和 crypto 这些库中 xff0c 但是从这里入门的话实在太过于痛苦 xff0c 这些示例都是着力于系统操作和性能的运行代码 对于没
  • 从零开始搭建Raspberry Pi机器视觉编程环境

    从零开始搭建Raspberry Pi机器视觉编程环境 本文主要包括如下内容 xff1a 安装Raspbian系统 连接和设置网络 安装中文支持 用电脑控制树莓派 通过SSH远程登录树莓派命令行界面 安装VNC远程登录树莓派图形桌面 通过串口
  • loss函数之margin改进方法

    最近sphereface人脸方法是目前开源人脸中最有效的方法 xff0c 通过改进我也获得了lfw acc 99 7 的结果 xff0c 下面几篇也是对sphereface改进的论文 xff1a AM Additive Margin Sof
  • mininet学习记录之openflow

    一 FAQ mn 指令的默认controller是ovs controller xff0c 最多只支持16个switch xff0c 如果要支持更多 xff0c 必须换controller OpenFlow reference implem
  • Open vSwitch常用指令

    link設定 OpenvSwitch by roan xff0c 内容相对比较全面 xff0c 但是给出的网页链接废了好多 流表中数字越大 xff0c 优先级越高 各个组件的命令有什么子命令和功能 xff0c 直接 help e g ovs
  • CVS使用手册 zz

    CVS使用手册 CVS是一个C S系统 xff0c 多个开发人员通过一个中心版本控制系统来记录文件版本 xff0c 从而达到保证文件同步的目的 工作模式如下 xff1a CVS服务器 xff08 文件版本库 xff09 xff08 版 本
  • 数据清洗工作小结

    今天帮课题组的老师处理了一部分数据 xff0c 由于长时间不做数据清洗的工作 xff0c 本栗子进行了长达2个小时的百度 这篇文档主要是针对该清洗工作的小结 从xlsx文件中读取指定的几列数据 xff0c 为数据框格式 xls span c
  • zhucheng关于2006上海I题的结论及证明

    题目意思是给出N和素数P xff0c 求杨辉三角第N行中能被P整除的数的个数 结论是将N写成P进制数N0N1N2 Nm xff0c 答案就是 N 43 1 N0 43 1 N1 43 1 Nm 43 1 证明如下 组合数C n m 61 n
  • mybatis-plus引入依赖报错Maven Missing artifact xxx:jar

    mybatis plus在添加依赖时可能会出现某个jar包下载有问题 xff0c 同时第一行出错提示maven中无法下载 xff08 xsi schemaLocation xff09 或jar包下载出错 右键项目 gt maven gt u
  • C++语言程序设计

    C 43 43 语言程序设计 如需转载请标明出处 xff1a http blog csdn net itas109 文章目录 C 43 43 语言程序设计1 语言概述1 1 字符集合1 2 词法记号关键字标识符文字操作符 运算符 分隔符空白
  • 查看C语言库函数源码

    查看C语言库函数源码 如需转载请标明出处 xff1a http blog csdn net itas109 文章目录 查看C语言库函数源码1 visual studio2 glibc3 llvm4 其他 例如查找string h头文件中的s

随机推荐

  • CSerialPort教程(9) - CSerialPort输出详细调试信息及日志

    CSerialPort教程 9 CSerialPort输出详细调试信息及日志 前言 CSerialPort项目是基于C 43 43 的轻量级开源跨平台串口类库 xff0c 用于实现跨平台多操作系统的串口读写 CSerialPort项目的开源
  • NodeJS输出内存使用信息到日志

    NodeJS输出内存使用信息到日志 如需转载请标明出处 xff1a http blog csdn net itas109 前言 内存信息是应用程序非常重要的信息 xff0c 尤其是在排查内存相关问题的时候 本文将介绍NodeJS如何输出内存
  • 使用Node.js版本管理工具管理多个Node.js版本

    使用Node js版本管理工具管理多个Node js版本 前言 本地开发时 xff0c 有时需要多个Node js版本进行验证 xff0c 因此需要一个Node js版本管理工具 Node js版本管理工具有很多 xff0c 如fnm nv
  • gitbook通过markdown制作电子书

    gitbook通过markdown制作电子书 环境 xff1a gitbook cli 2 3 2 2017 07 14 gitbook 3 2 3 2017 08 03 Node js 10 24 1 2021 04 06 npm 6 1
  • mdbook通过markdown制作电子书(代替gitbook)

    mdbook通过markdown制作电子书 代替gitbook 环境 xff1a mdbook v0 4 28 前言 gitbook制作电子书大家已经非常熟悉了 xff0c 但是对于gitbook工具官方已经不再维护了 xff0c 而且环境
  • 解决ubuntu 22.04 vmware无法共享文件问题

    解决ubuntu 22 04 vmware无法共享文件问题 环境 xff1a vmware 16 2 OS ubuntu 22 04 问题 安装完ubuntu 22 04后 xff0c vmtool安装报错 xff0c 无法使用共享文件和屏
  • 查看Android模拟器的实时日志

    查看Android模拟器的实时日志 环境 xff1a OS windows 10 adb 1 0 41 1 下载ADB https dl google com android repository platform tools latest
  • 心情不好

    今天知道了一个非常非常不好的消息 xff0c 突然感觉自己活得很窝囊 xff01 xff01 xff01 xff01 当兄弟有事需要帮忙的时候自己有了无能为力的感觉 所以 xff0c 要变强 xff0c 就算不为了自己 xff0c 也要为了
  • VS2019使用VLD(Visual Leak Detector)检测CPP内存泄漏

    VS2019使用VLD Visual Leak Detector 检测CPP内存泄漏 环境 xff1a 编译器 VS2019 VLD 2 5 1 前言 在windows平台下 xff0c VLD Visual Leak Detector 是
  • windows上Git Bash支持常用命令gcc tree zip wget cmake ninja

    windows上Git Bash支持常用命令gcc tree zip wget cmake ninja 前言 Git Bash基于MinGW64 提供了win32下的linux命令环境 xff0c 如ls cat tar等 但是Git Ba
  • MSVC和MinGW导出的.dll.a和.lib相互调用

    MSVC和MinGW导出的 dll a和 lib相互调用 如需转载请标明出处 xff1a http blog csdn net itas109 环境 xff1a OS windows 10 MinGW64 x86 64 8 1 0 rele
  • windows下源码编译QuickJS动态库

    windows下源码编译QuickJS动态库 如需转载请标明出处 xff1a http blog csdn net itas109 技术交流Q xff1a 129518033 前言 QuickJS是一个小型并且可嵌入的Javascript引
  • C/C++内存泄漏概述、分析、防范和排查

    C C 43 43 内存泄漏概述 分析 防范和排查 如需转载请标明出处 xff1a http blog csdn net itas109 技术交流Q xff1a 129518033 1 概念 狭义上 xff0c 内存泄漏是指动态分配的内存未
  • Linux使用asan排查C/C++内存泄漏

    Linux使用asan排查C C 43 43 内存泄漏 如需转载请标明出处 xff1a https blog csdn net itas109 技术交流 xff1a 129518033 环境 xff1a OS Ubuntu 20 04 Ce
  • windows下使用umdh定位C++内存泄漏

    windows下使用umdh定位C 43 43 内存泄漏 如需转载请标明出处 xff1a https blog csdn net itas109 技术交流 xff1a 129518033 环境 xff1a OS windows 10 190
  • Dear ImGui结合CMake实现基于GLFW和OpenGL3的入门级hello world代码

    Dear ImGui结合CMake实现基于GLFW和OpenGL3的入门级hello world代码 如需转载请标明出处 xff1a https blog csdn net itas109 技术交流 xff1a 129518033 环境 x
  • C++常用第三方库

    C 43 43 常用第三方库 如需转载请标明出处 xff1a https blog csdn net itas109 技术交流 xff1a 129518033 1 框架 Boost 通用C 43 43 标准库 Boost 5 6k 2023
  • windows下源码编译和使用TCMalloc

    windows下源码编译和使用TCMalloc 环境 xff1a OS windows 10 编译器 xff1a vs2019 cmake 3 22 1 tcmalloc gperftools 2 10 前言 TCMalloc是Google
  • SRM340

    本来想比赛的 可是睡着了 5555555555555 CssPropertyConverter http www topcoder com stat c 61 problem statement amp pm 61 7503 amp rd
  • 干货丨MapReduce的工作流程是怎样的?

    MapReduce编程模型开发简单且功能强大 xff0c 专门为并行处理大规模数据量而设计 xff0c 接下来 xff0c 我们通过一张图来描述MapReduce的工作过程 xff0c 如下图所示 在图中 xff0c MapReduce的工