MapReduce作业运行机制
jobClient.submitJobInternal()所实现的提交作业过程如下:
3) 向Jobtracker请求一个新的job ID(步骤2)
4) 检查作业的输出路径,如果未指定或已存在则不提交作业并抛错误给程序;
5) 计算并生成作业的输入分片,如果路径不存在则不提交作业并抛错误给程序;
6) 将运行作业所需要的资源(包括作业jar文件,配置文件和计算所得的输入分片)复制到jobtracker的文件系统中以job id命名的目录下(即HDFS中)。作业jar副本较多(mapred.submit.replication = 10)(步骤3)
7) 告知jobtracker作业准备执行(真正的提交作业jobSubmitClient.submitJob())(步骤4)
2)为了创建任务运行列表,job scheduler首先从共享文件系统中获取已计算好的输入分片信息(步骤6),然后为每个分片创建一个map任务;
3)创建的reduce任务数量由Job的mapred.reduce.task属性决定(setNumReduceTasks()设置),schedule创建相应数量的reduce任务。 任务在此时被指定ID。
4)除了map和reduce任务,还有setupJob和cleanupJob需要建立:由tasktrackers在所有map开始前和所有reduce结束后分别执行,这两个方法在OutputCommitter中(默认是FileOutputCommitter)。setupJob()创建输出目录和任务的临时工作目录,cleanupJob()删除临时工作目录。
2)每个tasktracker会有固定数量的map和reduce任务槽,数量有tasktracker核的数量和内存大小来决定。jobtracker会先将tasktracker的所有的map槽填满,然后才填此tasktracker的reduce任务槽。
3)Jobtracker分配map任务时会选取与输入分片最近的tasktracker,分配reduce任务用不着考虑数据本地化。
1) tasktracker分配到一个任务后,首先从HDFS中把作业的jar文件及运行所需要的全部文件(DistributedCache设置的)复制到tasktracker本地(步骤8);
2) 接下来tasktracker为任务新建一个本地工作目录,并把jar文件的内容解压到这个文件夹下;
3) tasktracker新建一个taskRunner实例来运行该任务(步骤9);
4) TaskRunner启动一个新的JVM来运行每个任务(步骤10),以便客户的map/reduce不会影响tasktracker。
Child JVM有独立的线程每隔3秒检查任务更新标志,如果有更新就会报告给此tasktracker;
tasktracker每隔5秒给jobtracker发心跳;
job tracker合并这些更新,产生一个表明所有运行作业及其任务状态的全局试图。
JobClient.monitorAndPrintJob()每秒查询这些信息。
Job得到完成信息便从waitForCompletion()返回。
最后,jobtracker清空作业的工作状态,并指示tasktracker也清空作业的工作状态(如删除中间输出)。
3) 如果他们属于未完成的作业的话,reduce阶段无法获取改tasktracker上的本地map输出文件,任何任务都需要重新调度
MapReduce作业运行机制相关推荐
- 经典MapReduce作业和Yarn上MapReduce作业运行机制
一.经典MapReduce的作业运行机制 如下图是经典MapReduce作业的工作原理: 1.1 经典MapReduce作业的实体 经典MapReduce作业运行过程包含的实体: 客户端,提交MapR ...
- MapReduce的运行机制及共同好友
1 .MapReduce的运行机制详解 1.1:MapTask 工作机制 整个Map阶段流程大体如上图所示. 简单概述:inputFile通过split被逻辑切分为多个split文件,通过Record ...
- 【大数据day14】——MapReduce的运行机制详解(案列:Reduce 端实现 JOIN, Map端实现 JOIN,求共同好友)
文章目录 1 .MapReduce的运行机制详解 1.1:MapTask 工作机制 详细步骤 配置 1.2 :ReduceTask 工作机制 详细步骤 1.3:Shuffle 过程 2. 案例: Re ...
- 什么是MapReduce?MapReduce的运行机制是什么?MapReduce的实现过程
1. MAPREDUCE原理篇(1) Mapreduce是一个分布式运算程序的编程框架,是用户开发"基于hadoop的数据分析应用"的核心框架: Mapreduce核心功能是将用户 ...
- 如果遇到Hadoop集群正常,MapReduce作业运行出现错误,如何来查看作业运行日志(图文详解)...
这个时候我们可以进入logs下的userlogs 备注:userlogs目录下有很多个以往运行的作业,我选择最新的最大编号的作业,就是我们当前运行作业的日志.然后找到stderr stdout sys ...
- MapReduce 运行机制
Hadoop 中的MapReduce是一个使用简单的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错式并行处理TB级别的数据集. 一个MapReduce作业 ...
- MapReduce运行机制
相关链接 MapReduce中Shuffle机制详解--Map端Shuffle链接 MapReduce中Shuffle机制详解--Reduce端Shuffle链接 MapReduce将作业job的 ...
- MapReduce作业在Hadoop完全分布式集群上运行的问题与思考(持续更新)
1.集群已搭建好且通过了WordCount测试,但是在eclipse上开发的程序却仍然是只在namenode上运行 不知道是不是没有配置好eclipse上的Map/Reduce Locations,个 ...
- MapTask并行度决定机制、FileInputFormat切片机制、map并行度的经验之谈、ReduceTask并行度的决定、MAPREDUCE程序运行演示(来自学笔记)
1.3 MapTask并行度决定机制 maptask的并行度决定map阶段的任务处理并发度,进而影响到整个job的处理速度 那么,mapTask并行实例是否越多越好呢?其并行度又是如何决定呢? 1.3 ...
- MapReduce运行机制-Map阶段
MapTask 运行机制 整个Map阶段流程大体如上图所示. 简单概述:inputFile通过split被逻辑切分为多个split文件,通过Record按行读取内容给map(用户自己实现的)进行处理, ...
最新文章
- POJ1564 Sum It Up(DFS)
- gre tunnel源码分析之接收流程
- F. It‘s a bird! No, it‘s a plane! No, it‘s AaParsa!
- 脱机下载至校验成功的脚本
- WPF实现TextBox水印效果
- 机械硬盘 运行 linux 很慢,如果读写硬盘操作有问题,假死机、很慢等,就检查一下硬盘坏道...
- php arrayfillkeys,PHP中的array_fill_keys()函数
- 关于ucgui3.98(显示部分)移植
- java 脚本怎么写_编写java的运行脚本
- 【目标检测】|RFB ECCV2018
- 基础入门学习Python爬取微信公众号文章、标题、文章地址
- 微型计算机中lo设备的含义是,专转本计算机 基础知识.doc
- 在持续集成 (CI) 环境中使用 Android 模拟器 | AndroidDevSummit 中文字幕视频
- excel调查问卷的录入
- 什么是CISSP(国际注册信息安全认证专家)?
- 如果面试时大家都说真话
- 边缘计算使能智慧电网
- android 系统 dpi设置,安卓系统DPI的划分
- 一位对抗苹果的“勇士”:公开 iOS 未修复漏洞后,再写《恶意软件进 App Store 指南》
- 区块链最后拼的是数据规模和数据处理能力
热门文章
- 【游戏数据库】大型网络游戏数据库设计方面讨论?(微软平台) 游戏数据库
- 2019依图科技笔试题
- 0x00000116错误代码 nvlddmkm.sys 蓝屏
- AndroidQ文件存储适配
- 初探PHP开源采集器----蓝天采集器
- mysql经典sql语句大全_经典SQL语句大全(sql查询语句大全集锦)
- powershell_windows命令行杀进程(pskill)/进程任务管理/服务管理/(查看/关闭/停止/移除windows移除mysql服务)
- 使用inkscape制作logo
- 学影视后期剪辑应该看什么书?零基础学剪辑书籍推荐
- MIMO技术与链路容量