MAPREDUCE工作原理

分布式离线计算—MapReduce—基本原理 原文作者:黎先生 原文地址:MapReduce基本原理及应用 目录 一、MapReduce模型简介 1. Map和Reduce函数 2. MapReduce体系结构 3. MapReduce工作流程 4. MapReduce应用程序执行过程 二 、WordCount运行实例 1.WordCount的Map过程 2. WordCount的Reduce过程 3. WordCount源码 一、MapReduce模型简介   MapReduce将复杂的、运行于大规模集群上的并行计算过.. 阅读详情

1.MapReduce作业运行流程

流程分析:

1.在客户端启动一个作业。

2.向JobTracker请求一个Job ID。

3.将运行作业所需要的资源文件复制到HDFS上,包括MapReduce程序打包的JAR文件、配置文件和客户端计算所得的输入划分信息。这些文件都存放在JobTracker专门为该作业创建的文件夹中。文件夹名为该作业的Job ID。JAR文件默认会有10个副本(mapred.submit.replication属性控制);输入划分信息告诉了JobTracker应该为这个作业启动多少个map任务等信息。

4.JobTracker接收到作业后,将其放在一个作业队列里,等待作业调度器对其进行调度(这里是不是很像微机中的进程调度呢,呵呵),当作业调度器根据自己的调度算法调度到该作业时,会根据输入划分信息为每个划分创建一个map任务,并将map任务分配给TaskTracker执行。对于map和reduce任务,TaskTracker根据主机核的数量和内存的大小有固定数量的map槽和reduce槽。这里需要强调的是:map任务不是随随便便地分配给某个TaskTracker的,这里有个概念叫:数据本地化(Data-Local)。意思是:将map任务分配给含有该map处理的数据块的TaskTracker上,同时将程序JAR包复制到该TaskTracker上来运行,这叫“运算移动,数据不移动”。而分配reduce任务时并不考虑数据本地化。

5.TaskTracker每隔一段时间会给JobTracker发送一个心跳,告诉JobTracker它依然在运行,同时心跳中还携带着很多的信息,比如当前map任务完成的进度等信息。当JobTracker收到作业的最后一个任务完成信息时,便把该作业设置成“成功”。当JobClient查询状态时,它将得知任务已完成,便显示一条消息给用户。

以上是在客户端、JobTracker、TaskTracker的层次来分析MapReduce的工作原理的,下面我们再细致一点,从map任务和reduce任务的层次来分析分析吧。

2.Map、Reduce任务中Shuffle和排序的过程

Map端:

1.每个输入分片会让一个map任务来处理,默认情况下,以HDFS的一个块的大小(默认为64M)为一个分片,当然我们也可以设置块的大小。map输出的结果会暂且放在一个环形内存缓冲区中(该缓冲区的大小默认为100M,由io.sort.mb属性控制),当该缓冲区快要溢出时(默认为缓冲区大小的80%,由io.sort.spill.percent属性控制),会在本地文件系统中创建一个溢出文件,将该缓冲区中的数据写入这个文件。

2.在写入磁盘之前,线程首先根据reduce任务的数目将数据划分为相同数目的分区,也就是一个reduce任务对应一个分区的数据。这样做是为了避免有些reduce任务分配到大量数据,而有些reduce任务却分到很少数据,甚至没有分到数据的尴尬局面。其实分区就是对数据进行hash的过程。然后对每个分区中的数据进行排序,如果此时设置了Combiner,将排序后的结果进行Combia操作,这样做的目的是让尽可能少的数据写入到磁盘。

3.当map任务输出最后一个记录时,可能会有很多的溢出文件,这时需要将这些文件合并。合并的过程中会不断地进行排序和combia操作,目的有两个:1.尽量减少每次写入磁盘的数据量;2.尽量减少下一复制阶段网络传输的数据量。最后合并成了一个已分区且已排序的文件。为了减少网络传输的数据量,这里可以将数据压缩,只要将mapred.compress.map.out设置为true就可以了。

4.将分区中的数据拷贝给相对应的reduce任务。有人可能会问:分区中的数据怎么知道它对应的reduce是哪个呢?其实map任务一直和其父TaskTracker保持联系,而TaskTracker又一直和JobTracker保持心跳。所以JobTracker中保存了整个集群中的宏观信息。只要reduce任务向JobTracker获取对应的map输出位置就ok了哦。

到这里,map端就分析完了。那到底什么是Shuffle呢?Shuffle的中文意思是“洗牌”,如果我们这样看:一个map产生的数据,结果通过hash过程分区却分配给了不同的reduce任务,是不是一个对数据洗牌的过程呢?呵呵。

Reduce端:

1.Reduce会接收到不同map任务传来的数据,并且每个map传来的数据都是有序的。如果reduce端接受的数据量相当小,则直接存储在内存中(缓冲区大小由mapred.job.shuffle.input.buffer.percent属性控制,表示用作此用途的堆空间的百分比),如果数据量超过了该缓冲区大小的一定比例(由mapred.job.shuffle.merge.percent决定),则对数据合并后溢写到磁盘中。

2.随着溢写文件的增多,后台线程会将它们合并成一个更大的有序的文件,这样做是为了给后面的合并节省时间。其实不管在map端还是reduce端,MapReduce都是反复地执行排序,合并操作,现在终于明白了有些人为什么会说:排序是hadoop的灵魂。

3.合并的过程中会产生许多的中间文件(写入磁盘了),但MapReduce会让写入磁盘的数据尽可能地少,并且最后一次合并的结果并没有写入磁盘,而是直接输入到reduce函数。

mapreduce原理

MapReduce运行原理

mapreduce原理

一、MapReduce的优缺点:

优点:
1.易于编程;
2.良好的扩展性;
3.高容错性;
4.适合PB级别以上的大数据的分布式离线批处理。

缺点:
1.难以实时计算(MapReduce处理的是存储在本地磁盘上的离线数据)
2.不能流式计算(MapReduce设计处理的数据源是静态的)
3.难以DAG计算(有向无环图计算,由于多个任务存在依赖关系,后一个应用
的输入是前一个应用的输出。解决这一问题的方式有Apache的Tez计算框架,
它是基于hadoop Yarn之上的DAG计算框架,它将MapReduce任务分解为多个子任务
同时可以把多个Map/ Reduce任务合并成一个大的DAG任务,这样当前一个任务完成
之后,直接将结果输出给下一个任务,不用将结果写到磁盘之上,减少了Map/Reduce
之间的文件存储。同时合理的组合其子过程,减少了任务的运行时间。)

MapReduce 执行原理 (大数据面试高频四) MR工作流程 阅读详情

相关推荐

HiveSQL解析原理:包括SQL转化为MapReduce过程及MapReduce如何实现基本SQL操作

HiveSQL解析原理:包括SQL转化为MapReduce过程及MapReduce如何实现基本SQL操作

weixin_43542605的博客 4969

MapReduce工作原理图文详解

                                            MapReduce工作原理图文详解 前言: 前段时间我们云计算团队一起学习了hadoop相关的知识,大家都积极地做了、学了很多东西,收获颇丰。可是开学后,大家都忙各自的事情,云计算方面的动静都不太大。呵呵~不过最近在胡老大的号召下,我们云计算团队重振旗鼓了,希望大伙仍高举“云在手,跟我走”的口号战斗...

逸情公子 5531

MapReduce工作原理及流程

一、MapReduce工作原理 作业执行涉及4个独立的实体 1、客户端,用来提交MapReduce作业 2、JobTracker,用来协调作业的运行 3、TaskTracker,用来处理作业划分后的任务 4、HDFS,用来在其它实体间共享作业文件 首先是客户端要编写好mapreduce程序,配置好mapreduce的作业也就是job, 接下来就是提交job了,提交jo

Hacker_Wind的博客 1435

MapReduce和hive的原理

HiveQL查询经过解析与优化后,转换为一系列的MapReduce任务,并通过MapReduce模型在分布式环境中进行执行。将sgL转换为抽象语法树AST tree,然后遍历 ASTtree,查询 gueryBlock然后遍历 gueryBlock,翻译成执行操作树,然后逻辑层优化器进行操作树优化,减少 shuffle 数据量,然后遍历操作树,翻译成mgpReduce ,任务。:在Reduce阶段,Map阶段的输出结果被按照键进行排序,并且将同一个键的值聚合在一起。

HelloWowofei的博客 917

MapReduce简明工作原理

MapReduce被称为开启大数据算法之门的钥匙,本文对MapRduce的工作原理作一个简明的介绍。 MapReduce核心思想及框架 在古代,人们采伐下来很多木头,需要用马来拉,但如果木头很多的话,用一匹马拉则不现实,这时,找一匹更强壮的马来拉显然不是一个好的办法,而会选择让多匹马来拉;对于大数据来说,也是一样的原理,超级计算机并不是最可行的解决方案,分而治之才是最佳选择,这就是MapRed...

wangkuangood3200的专栏 966

高频面试题-项目介绍篇

聊聊如何介绍项目经历。

m0_73359763的博客 1910

MapReduce 工作原理

MapReduce的工作原理

m0_72168501的博客 4857

电子产品设计中EFT防护的关键技术与实践

本文深入探讨了电子产品设计中EFT(快速瞬变脉冲群)防护的关键技术与实践。文章从EFT干扰的原理入手,系统阐述了通过优化PCB布局与地平面设计、构建电源与信号端口滤波防护电路、精选核心器件以及实施软件容错策略,来构建多层次、系统性的抗干扰防线,助力产品稳定通过严苛的电磁兼容测试。

e4f5g6h的博客 788

(超详细)MapReduce工作原理及基础编程

MapReduce编程基础 JunLeon——go big or go home 前言: Google于2003年在SOSP上发表了《The Google File System》,于2004年在OSDI上发表了《MapReduce: Simplified Data Processing on Large Clusters》,于2006年在OSDI上发表了《Bigtable: A Distributed Storage System for Structured Data》。这三篇论文...

JunLeon的博客 8万+

从AI画稿到3D虚拟时装:Illustrator与Substance 3D的服装设计工作流

本文旨在解决传统服装与纺织品设计师在产品开发流程中,面临的“2D印花图案无法直观预见3D上身效果”、“物理打样成本高昂且周期漫长”的核心痛点。我们将介绍一套纯数字化的3D可视化工作流,核心是利用 Adobe Illustrator 进行矢量印花图案创作,通过 Adobe Substance 3D Sampler 将其转化为逼真的PBR(基于物理渲染)布料材质,并最终在 Adobe Substance 3D Stager 中,将该材质应用于3D服装模型,渲染出照片级的虚拟样衣。本指南将帮助设计师以极低的成本和

Kingsdesigner的博客 1402

嵌入式定点PID控制器:mrm-pid极简实现与实时控制实践

PID控制器是自动控制领域的基础算法,其核心在于比例、积分、微分三环节的协同调节。在资源受限的嵌入式系统中,传统浮点PID易受时序抖动、内存分配不确定性及FPU依赖影响,难以满足毫秒级确定性响应需求。定点PID通过整数运算替代浮点计算,显著提升执行周期稳定性与跨平台兼容性,成为电机控制、传感器补偿等实时场景的关键技术路径。mrm-pid库以位置式结构、int32_t增益参数、int64_t积分累加器和无动态内存设计,实现了超低开销(12–28 CPU周期)与完全可审计的闭环内核,天然适配Cortex-M系列

weixin_31659095的博客 572

mapreduce工作原理

分布式技术专题+面试解析+相关的手写和学习的笔记pdf《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!48190055)]《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

2401_84049061的博客 1025

双馈风机分段控制策略的一次调频模型深度解析

双馈风机分段调频控制策略研究 摘要:针对高比例风电并网导致的系统频率稳定问题,本研究提出一种基于风速分区的双馈风机一次调频控制策略。该策略根据风速区间(低、中、高)特性差异,分别采用:1)低风速区以转子动能控制为主;2)中速区结合超速备用与动能释放;3)高速区引入桨距角协调控制。通过构建包含空气动力学、轴系动态的完整数学模型,验证了分段控制在调频能力(最大提升40%功率支撑)、转速安全范围(控制在0.7-1.2pu)和动态响应速度(200ms内快速响应)等方面的优势。

huanghm88的专栏 335

MapReduce工作原理详解

MapReduce作为一种分布式计算模型,通过将任务分解为Map和Reduce两个阶段,实现了大规模数据的高效处理。它广泛应用于数据统计、数据转换、机器学习和图计算等领域。通过合理设置分片大小、调整任务数量、使用Combiner等优化技巧,可以显著提高MapReduce作业的性能。希望本文能够帮助读者深入理解MapReduce的工作原理,并在实际应用中充分发挥其优势。随着大数据技术的不断发展,MapReduce虽然面临一些挑战,但其核心思想仍然具有重要的指导意义。

2301_80870395的博客 2611

EtherCAT主站SOEM -- 19 --Qt-Soem通过CSP模式(周期同步位置模式)控制一个电机转圈圈

以上就是EtherCAT主站SOEM – 19 --Qt-Soem通过CSP模式(周期同步位置模式)控制一个电机转圈圈的内容。有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。创作不容,如果文档对您有帮助,记得给个赞。

常驻客栈的博客--嵌入式EtherCAT 1999

Arcgis栅格裁剪批处理工具

Arcgis栅格裁剪批处理工具

yilvyangguang520的博客 2173

mapreduce的工作原理

虽然新框架(如 Spark)在性能上更优,但 MapReduce 仍是 Hadoop 生态的核心组件,理解其原理对学习大数据技术至关重要。的思想,将大数据任务分解为多个小任务,并行处理后再合并结果。如果某个 Task 执行过慢,集群会启动相同任务的备份,取最先完成的结果。:在 Reduce 阶段前,数据按键排序,便于归约处理。在 Map 阶段后,先对本地数据进行聚合,减少网络传输。:处理输入数据,生成键值对(Key-Value)。:合并 Map 阶段的输出,生成最终结果。读取输入分片,逐行处理数据,生成。

2301_81748087的博客 1767

【论文精读】Virtual Adversarial Training——一种用于监督学习和半监督学习的正则化方法

本文提出了一种新的正则化方法——虚拟对抗训练(Virtual Adversarial Training, VAT),旨在通过引入虚拟对抗损失来增强模型的泛化能力。虚拟对抗损失衡量了给定输入条件下条件标签分布的局部平滑性,定义为模型对输入数据点周围局部扰动的鲁棒性。与传统对抗训练不同,VAT不需要标签信息来定义对抗方向,因此适用于半监督学习。本文详细阐述了VAT的核心方法,并通过实验验证了其在多个基准数据集上的有效性。:虚拟对抗训练;正则化方法;监督学习;半监督学习;对抗方向。

nmdbbzcl的博客 366

MapReduce的工作原理

一张图了解Mapreduce工作原理:

giantleech的博客 112

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

MapReduce 基础之:图文讲解 MapReduce 工作原理

图文详解mapreduce

weixin_43542605的博客 2万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

MapReduce工作原理

文章概览: 1、MapReduce简介 2、MapReduce有哪些角色?各自的作用是什么? 3、MapReduce完整运行流程 4、MapReduce工作原理 5、MapReduce中Shuffle过程 6、MapReduce编程主要组件 7、针对MapReduce的缺点,YARN解决了什么? MapReduce简介 MapReduce是一种并行可扩展计算模型,并且有较...

weixin_30338743的博客 282

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: hive四种存储格式介绍与分析比较
下一篇: Namenode、Datanode、Jobtracker、Tasktracker、yarn
程序员椰子橙
博客等级 码龄9年 46粉丝 163原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值