MapReduce执行流程

基于STM32F103C8T6单片机设计CAN接口8路继电器控制板硬件(原理图+PCB)+软件源码 基于STM32F103C8T6单片机设计CAN接口8路继电器控制板硬件(原理图+PCB)+软件源码,仅供学习及设计参考。 阅读详情
MapReduce的大体流程是这样的,如图所示:

由图片可以看到mapreduce执行下来主要包含这样几个步骤
1.首先对输入数据源进行切片
2.master调度worker执行map任务
3.worker读取输入源片段
4.worker执行map任务,将任务输出保存在本地
5.master调度worker执行reduce任务,reduce worker读取map任务的输出文件
6.执行reduce任务,将任务输出保存到HDFS

若对流程细节进行深究,可以得到这样一张流程图

角色描述:
JobClient:执行任务的客户端
JobTracker:任务调度器
TaskTracker:任务跟踪器
Task:具体的任务(Map OR Reduce)

从生命周期的角度来看,mapreduce流程大概经历这样几个阶段:初始化、分配、执行、反馈、成功与失败的后续处理

每个阶段所做的事情大致如下

任务初始化

1.JobClient对数据源进行切片
切片信息由InputSplit对象封装,接口定义如下:
public interface InputSplit extends Writable {
    long getLength() throws IOException;
    String[] getLocations() throws IOException;
}
可以看到split并不包含具体的数据信息,而只是包含数据的引用,map任务会根据引用地址去加载数据
InputSplit是由InputFormat来负责创建的
public interface InputFormat<K, V> {
    InputSplit[] getSplits(JobConf job, int numSplits) throws IOException;
    RecordReader<K, V> getRecordReader(InputSplit split,JobConf job,Reporter reporter) throws IOException;
}
JobClient通过getSplits方法来计算切片信息,切片默认大小和HDFS的块大小相同(64M),这样有利于map任务的本地化执行,无需通过网络传递数据
切片成功后,JobClient会将切片信息传送至JobTracker
2.通过jobTracker生成jobId
    JobTracker.getNewJobId()
3.检查输出目录和输入数据源是否存在
    输出目录已存在,系统抛出异常
    输入源目录不存在,系统抛出异常
4.拷贝任务资源到jobTracker机器上(封装任务的jar包、集群配置文件、输入源切片信息)

任务分配

JobTracker遍历每一个InputSplit,根据其记录的引用地址选择距离最近的TaskTracker去执行,理想情况下切片信息就在TaskTracker的本地,这样节省了网络数据传输的时间
JobTracker和TaskTracker之间是有心跳通信的逻辑的,通过彼此间不停的通信,JobTracker可以判断出哪些TaskTracker正在执行任务,哪些TaskTracker处于空闲状态,以此来合理分配任务

任务执行

TaskTracker接到任务后开始执行如下操作:
1.将任务jar包从HDFS拷贝到本地并进行解压
2.创建一个新的JVM来执行具体的任务,这样做的好处是即使所执行的任务出现了异常,也不会影响TaskTracker的运行使用


如果所执行的任务是map任务,则处理流程大致如下:
首先加载InputSplit记录的数据源切片,通过InputFormat的getRecordReader()方法
获取到Reader后,执行如下操作:
K key = reader.createKey();
V value = reader.createValue();
while (reader.next(key, value)) {//遍历split中的每一条记录,执行map功能函数
    mapper.map(key, value, output, reporter);
}

执行反馈

mapreduce的执行是一个漫长的过程,执行期间会将任务的进度反馈给用户
任务结束后,控制台会打印Counter信息,方便用户以全局的视角来审查任务

执行成功

清理MapReduce本地存储(mapred.local.dir属性指定的目录)
清理map任务的输出文件

执行失败

1.如果task出现问题(map或者reduce)
错误可能原因:用户代码出现异常;任务超过mapred.task.timeout指定的时间依然没有返回
错误处理:
首先将错误信息写入日志
然后jobtracker会调度其他tasktracker来重新执行次任务,如果失败次数超过4次(通过mapred.map.max.attempts和mapred.reduce.max.attempts属性来设置,默认为4),则job以失败告终
如果系统不想以这种方式结束退出,而是想通过Task成功数的百分比来决定job是否通过,则可以指定如下两个属性
mapred.max.map.failures.percent            map任务最大失败率
mapred.max.reduce.failures.percent        reduce任务最大失败率
如果失败比率超过指定的值,则job以失败告终

2.如果是tasktracker出现问题
判断问题的依据:和jobtracker不再心跳通信
jobtracker将该tasktracker从资源池中移除,以后不在调度它

3.jobtracker出现问题
jobtracker作为系统的单点如果出现问题也是最为严重的问题,系统将处于瘫痪
uniapp - 最新微信小程序手机号一键登录功能效果,uniapp小程序实现手机号码一键登录,uniapp微信小程序端通过手机号授权完成立即登录操作(详细示例源码,新手小白一键复制开箱即用) uniapp,微信小程序,uniapp小程序平台,uniApp手机号一键登录,uniapp小程序端手机号一键登录功能,实现微信小程序手机号一键登录,在uniapp中实现获取手机一键登录功能,uniapp手机号快捷登录,uniapp微信小程序授权登录并获取手机号,微信小程序手机号快速验证组件调用方式,uniapp小程序怎么用手机号一键登录,uniapp一键登录流程及代码,如何获取手机号一键登录到小程序,微信小程序获取本机手机号一键登录功能,新手详细教程,详细手机一键登录完整示例代码,uni-app微信unia 阅读详情

相关推荐

未来计算的革命:探索存算一体芯片的潜力与挑战

未来计算的革命:探索存算一体芯片的潜力与挑战

jtwqwq的博客 1611

MapReduce执行流程(图解+注解)

MapReduce执行流程(图解+注解)

hmi1024@163.com 3064

头歌 操作系统 课堂练习2.1:外部中断 第2关:第一次时钟中断

将答案0x796c输入到workspace/mushixun/恢复点的地址.txt中的括号里即可,随后使用kill命令防止对第三关的环境造成影响。

Yinfrey的博客 6086

MapReduce的工作流程

Collect 阶段:在用户编写的 map() 函数中,数据处理完成后,一般会调用 outputCollector.collect() 输出结果,在该函数内部,它会将生成的 key / value 分片(通过调用 partitioner ),并写入一个环形内存缓冲区中(该缓冲区默认大小是 100MB )。Reduce 阶段:对排序后的键值对调用 reduce() 方法,键相等的键值对调用一次 reduce()方法,每次调用会产生零个或者多个键值对,最后把这些输出的键值对写入到 HDFS 中。

weixin_44901473的博客 2479

qt5.14.2+vs2019配置msvc2017编译器

qt5.14.2+vs2019配置msvc2017编译器 在使用qt编译程序时此前一直使用的是自带的MinGW 32-bit和64-bit,现在想使用msvc编译器。本次使用的是qt5.14.2,vs2019,需要配置msvc2017的32-bit和64-bit编译器。 1、首先安装好qt5.14.2和vs2019,其次在visual studio installer选择修改,然后选择msvc2017对应的组件,本次安装的是这两个 2、打开qt creator的工具–选项–kits–编译器,选择Manu

bangtanhui的博客 1万+

【仓颉 + 鸿蒙 + AI Agent】CangjieMagic框架(3):Agent请求和响应

CangjieMagic框架:使用华为仓颉编程语言编写,专门用于开发AI Agent,支持鸿蒙、Windows、macOS、Linux等系统。这篇文章剖析一下 CangjieMagic 框架中的 AgentRequest 和 AgentResponse。

九丘教育官方博客 1475

MapReduce介绍及执行过程

mapreduce基本原理及介绍

小叮当的博客 6830

【OpenClaw从入门到精通】第15篇:国产芯片适配实战——昇腾/龙芯/天数智芯全流程跑通(2026实测版)

2026年国产芯片AI适配迎来爆发期,OpenClaw作为轻量化本地AI智能体,已实现华为昇腾、龙芯、天数智芯等主流国产平台的全流程适配。本文基于实测数据,从背景解析、核心原理、算法优化、实操部署四个维度,详细讲解OpenClaw在香橙派昇腾开发板、龙芯3B6000M、天数彤央TY1200及联想开天X7h的部署流程,同时提供统一工具玄武CLI的使用指南。文中包含完整代码、执行结果、避坑技巧及虚拟实战案例,兼顾新手入门与进阶提升,帮助读者快速掌握国产芯片上的本地AI部署能力,实现数据隐私保护与低成本AI落地。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1007

【MapReduce】执行流程总结

MapReduce的执行流程 MapReduce一共可以分为两个阶段 Map阶段和Reduce阶段、但是有一部分也可以划分为三个阶段(Map、Shuffle、Reduce) Map和Reduce阶段分属两台不同的主机,两者之间通过网络通信。 整个的执行流程可以如下图所示 一、Map阶段 Map负责分 1-1 MapTask阶段 读取HDFS上的文件,根据逻辑切片(这里的逻辑切片不是HDFS上面的BLOCK,而是MapReduce自己定制的切片)来启动线程(MapTask),.

qq_42176514的博客 2007

YOLOv11改进-上采样 | EUCB高效上卷积块,实现特征图尺度匹配和高效上采样

本文介绍了一种在YOLOv11目标检测模型中引入高效解码器模块EMCAD的创新方法,以提升模型在资源受限场景下的性能与效率。EMCAD由多个模块构成,其中核心的EUCB(高效上卷积块)通过上采样、深度可分离卷积、激活归一化和通道调整等操作,兼顾了特征质量与计算成本。实验结果显示,该模块在显著减少参数与FLOPs的同时仍具备优异性能。文章还提供了完整的YOLOv11模型集成流程、配置和训练实战。

魔改工程师的博客 1540

Python基础语法与最佳实践【python基础篇】

本文全面介绍了Python基础语法与最佳实践,涵盖变量与数据类型、控制流、函数、模块与包等核心概念。通过实际代码示例展示了条件语句、循环结构、函数定义及模块导入的基本用法。在最佳实践部分,重点讲解了PEP 8代码风格规范、异常处理技巧、列表推导式、上下文管理器、文档字符串编写以及enumerate和zip的高效使用。这些内容既适合Python初学者掌握基础语法,也能帮助有经验的开发者编写更规范、高效、可维护的代码。文章强调遵循Python官方推荐实践,通过合理运用语言特性提升代码质量。

博客 1977

MapReduce的执行流程

一个MapReduce的作业执行流程是:1)代码编写;2)作业配置;3)作业提交;4)Map任务的分配和执行;4)处理中间结果;5)Reduce任务的分配与执行;6)作业完成。具体如图1-1所示。下面以一个简单的单词计数例子对各个步骤做一个详细的介绍。 1代码编写及配置代码编写及配置主要是在客户端进行。1)代码编写主要是编写我们需要的map函数和Reduce函数。map函数代码如下:@Overri

孤落 1万+

三、参考比较法之城市建成区提取——提取

在正式开始提取之前,还是要继续啰嗦一下,其实基于夜间灯光数据建成区提取,可以分为好几个层次,基于县一级、市一级、省一级,很多论文的做法都是以市一级为准,也就是统计好市一级城市的每一年的统计年鉴中的建成区面积作为备用。有人可能会问为什么不以县一级,由于县一级的统计数据一般存在缺失,很难形成一个长时间序列的数据,所以一般采取的是市一级。前文也进行建议,如果确实要基于县一级进行提取可以参考前面理论介绍那篇文章中的相关建议。那么当我们确定阈值后如何将城市建成区提取出来?

端木宛白的博客家园 5401

MapReduce的执行流程&排序

MapReduce的执行流程&排序过程&溢写,环形缓冲区

limenghao2002的博客 2264

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Hive与MapReduce的关系和执行流程总结

特性HiveMapReduce接口/抽象高级,类SQL(HiveQL)低级,Java API目的数据仓库、批处理、查询分布式计算框架角色编译器、优化器、元数据管理执行引擎(默认且经典)易用性高,无需编写Java代码低,需要复杂的Java开发性能依赖底层引擎(MR/Tez/Spark)原生支持分布式,但延迟高Hive与MapReduce是解耦的。Hive负责“想”,即制定执行计划;MapReduce负责“做”,即分布式执行。

ITHomeZSL的博客 1507

老版QQ原生表情gif动态

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

MapReduce:执行流程

MapReduce:执行流程

大连赵哥的博客 830

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

MapReduce执行流程以及shuffle是什么

MapReduce执行流程以及shuffle是什么Map执行流程Reduce执行流程shuffle是什么 Map执行流程 就拿Wordcount来举例吧,明白了Wordcount就明白了流程 1.当一个大的文件要执行MapReduce任务时会根据HDFS的文件块大小进行拆分,一个文件块对应一个MapTask 2. 之后是对切片的数据按照一定的规则解析成KV的形式, 接口叫做InputFormat,,有一个默认实现叫做TextInputFormat使用LineRecordReader将一行内容解析为KV,行偏

关于运城的记忆的博客 2783

mapreduce执行过程流程图_Hadoop学习之Mapreduce执行过程详解

一、MapReduce执行过程MapReduce运行时,首先通过Map读取HDFS中的数据,然后经过拆分,将每个文件中的每行数据分拆成键值对,最后输出作为Reduce的输入,大体执行流程如下图所示:整个流程图具体来说:每个Mapper任务是一个java进程,它会读取HDFS中的文件,解析成很多的键值对,经过我们覆盖的map方法处理后,转换为很多的键值对再输出,整个Mapper任务的处理过程又可以分...

weixin_35349247的博客 1271

mapreduce的执行流程以及shuffle过程

1、mapreduce概述         a.mapreduce是一种分布式的计算模型,由google提出,主要用于搜索领域,解决海量数据的计算问题。         b.mapreduce由两个阶段组成,map和reduce,用户只需要实现map()和reduce()两个函数,即可实现分布式计算。         c.这两个函数的key,value对,表示函数的输入信

快乐小编的专栏 4002

mapreduce执行过程流程图_MapReduce —— 历久而弥新

引子MapReduce 是谷歌 2004 年(Google 内部是从03年写出第一个版本)发表的论文里提出的一个概念。虽然已经过去15 年了,但现在回顾这个大数据时代始祖级别概念的背景、原理和实现,仍能获得对分布式系统的很多直觉性的启发,所谓温故而知新。在Google 的语境里,MapReduce 既是一种编程模型,也是支持该模型的一种分布式系统实现。它的提出,让没有分布式系统背景的开发者,也能较...

weixin_39794130的博客 706

Hive执行原理、MapReduce执行流程、Spark执行流程

优化后可能先执行过滤条件再执行连接操作。

Made In SQL 1478

MapReduce执行流程解析

MapReduce执行流程解析

狗子的逆袭之路 2342

Hive,MapReduce执行流程分析

Hive 任务提交流程RM中事件转发器:AsyncDispatcher通过rmcontext启动AM this.rmContext.getDispatcher().getEventHandler() .handle(new RMAppEvent(applicationId, RMAppEventType.START)); 这里看到getDispatcher取rmDisp

半日闲的博客 4968
上一篇: hadoop counter
下一篇: hadoop的产生
JavaMan_chen
博客等级 码龄19年 329粉丝 82原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值