前言

从运行我们的 Map/Reduce 程序,到结果的提交,Hadoop 平台其实做了很多事情。

那么 Hadoop 平台到底做了什么事情,让 Map/Reduce 程序可以如此 "轻易" 地实现分布式运行?

Map/Reduce 任务执行总流程

经过之前的学习,我们已经知道一个 Map/Reduce 作业的总流程为:

代码编写  -->  作业配置  -->  作业提交  -->  Map任务的分配和执行  -->  处理中间结果(Shuffle)  -->  Reduce任务的分配和执行  -->  作业完成

如下图所示:

  

Map/Reduce 框架中的四大实体

1. 客户端

负责编写代码,配置作业,提交作业。任何节点都可以充当客户端。

2. JobTracker (1个)

作业中心控制节点,一般一个集群就一个JobTracker。

  3. TaskTracker (很多个)

作业具体执行节点,可以分为Map节点和Reduce节点两大类。

4. HDFS

分布式文件系统,保存从作业提交到完成需要的各种信息。

阶段一:提交作业阶段

1. 首先,开发人员编写好程序代码,配置好输入输出路径,Key/Value 类型等等。(这部分是人为控制阶段,接下来的所有操作都是Hadoop完成的了)

2. 从JobTracker处获取当前的作业ID号

3. 检查配置合法性 (如输入目录是否存在等)

4. 计算作业的输入划分,并将划分信息写入到Job.split文件。

5. 将运行作业需要的所有资源都复制到HDFS上。

6. 通知JobTracker准备完毕,可以执行作业了。

阶段二:初始化作业阶段

这个阶段,JobTracker将为作业创建一个对象,专门监控它的运行。

并根据Job.split文件(上一步生成)来创建并初始化Map任务和Reduce任务。

阶段三:分配任务

JobTracker和TaskTracker之间通信和任务分配是通过心跳机制来完成的,每个TaskTracker作为一个单独的JVM执行一个简单的循环。

TaskTracker每隔一段时间都会向JobTracker汇报它的任务进展报告,JobTracker在收到进展报告以后如果发现任务完成了,就会给它再分配新的任务。

一般来说TaskTracker有个任务槽,它是有容量限制的 - 只能装载一定个数的Map/Reduce任务。

这一步和下一步,就形成一次心跳。

阶段四:执行任务

这一步的主体是TaskTracker,主要任务是实现任务的本地化。

具体步骤如下:

1. 将job.split复制到本地

2. 将job.jar复制到本地

3. 将job的配置信息写入到job.xml

4. 创建本地任务目录,解压job.jar

5. 发布任务并在新的JVM里执行此任务。

6. 最后将计算结果保存到本地缓存

小结

本文细致分析了Map/Reduce的作业执行流程。

但在流程的执行过程当中,数据的具体流动途径也是需要仔细分析的 - 是存放在本地磁盘,还是HDFS?

另外,还需要做好错误处理 - 比如说某个节点坏了怎么办?

这些将在后面的两篇文章中做出分析和介绍。

第九篇:Map/Reduce 工作机制分析 - 作业的执行流程的更多相关文章

  1. Map/Reduce 工作机制分析 --- 作业的执行流程

    前言 从运行我们的 Map/Reduce 程序,到结果的提交,Hadoop 平台其实做了很多事情. 那么 Hadoop 平台到底做了什么事情,让 Map/Reduce 程序可以如此 "轻易& ...

  2. 第十篇:Map/Reduce 工作机制分析 - 数据的流向分析

    前言 在MapReduce程序中,待处理的数据最开始是放在HDFS上的,这点无异议. 接下来,数据被会被送往一个个Map节点中去,这也无异议. 下面问题来了:数据在被Map节点处理完后,再何去何从呢? ...

  3. Map/Reduce 工作机制分析 --- 数据的流向分析

    前言 在MapReduce程序中,待处理的数据最开始是放在HDFS上的,这点无异议. 接下来,数据被会被送往一个个Map节点中去,这也无异议. 下面问题来了:数据在被Map节点处理完后,再何去何从呢? ...

  4. 第十一篇:Map/Reduce 工作机制分析 - 错误处理机制

    前言 对于Hadoop集群来说,节点损坏是非常常见的现象. 而Hadoop一个很大的特点就是某个节点的损坏,不会影响到整个分布式任务的运行. 下面就来分析Hadoop平台是如何做到的. 硬件故障 硬件 ...

  5. Map/Reduce 工作机制分析 --- 错误处理机制

    前言 对于Hadoop集群来说,节点损坏是非常常见的现象. 而Hadoop一个很大的特点就是某个节点的损坏,不会影响到整个分布式任务的运行. 下面就来分析Hadoop平台是如何做到的. 硬件故障 硬件 ...

  6. MapReduce作业的执行流程

    MapReduce任务执行总流程 一个MapReduce作业的执行流程是:代码编写 -> 作业配置 -> 作业提交 -> Map任务的分配和执行 -> 处理中间结果 -> ...

  7. Yii2 源码分析 入口文件执行流程

    Yii2 源码分析  入口文件执行流程 1. 入口文件:web/index.php,第12行.(new yii\web\Application($config)->run()) 入口文件主要做4 ...

  8. MapReduce启动的Map/Reduce子任务简要分析

      对于Hadoop来说,是通过在DataNode中启动Map/Reduce java进程的方式来实现分布式计算处理的,那么就从源码层简要分析一下hadoop中启动Map/Reduce任务的过程.   ...

  9. Java IO工作机制分析

    Java的IO类都在java.io包下,这些类大致可分为以下4种: 基于字节操作的 I/O 接口:InputStream 和 OutputStream 基于字符操作的 I/O 接口:Writer 和 ...

随机推荐

  1. Jenkins实现PHP的自动部署

    1.汉化jenkins 1).安装汉化包 系统管理 -> 插件管理 -> 安装插件 ->选择插件(Locale plugin) 2).设置语言为中文 系统管理 -> 系统设置 ...

  2. 分布式代码管理系统Git实践

    1.1 版本管理工具介绍   什么是版本管理工具   为什么要使用版本管理工具?   老板要求小明写一个可行性报告,当他写完给老板看后,结果--     Git简介   早先linux内核代码托管在B ...

  3. [转载]LVS+Keepalived之三大模式

    LVS + Keepalived之三大模式 ============================================================================== ...

  4. 速卖通AE平台+聚石塔+奇门 完整教程V2

    公司是跨境电商,在阿里马马的速卖通平台上开有店铺,并且基于速卖通开放平台,自主研发了ERP系统,居今已有3年多的时间了,一直很稳定. 今年初,速卖通AE开放平台改版,并入淘宝开放平台中,我们的麻烦就开 ...

  5. pro asp.net mvc 5笔记

    1.Ninject条件绑定方法When(predicate)WhenClassHas<T>()WhenInj ectedInto<T>()例: kernel.Bind<I ...

  6. Mysql主从复制_模式之日志点复制

    MySQL数据复制的原理 MySQL复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).因此,要进行复制,必须在主服务器上启用二进制日志. 每个从服务器从主服务器接收主服务器已经记 ...

  7. CodeForces-740B Alyona and flowers

    题目要求选择一些花的集合,如果暴力去枚举每种选择方法明显是不行的.换种方式考虑:每一个集合都能为最后的答案做出要么正的.要么负的.要么0贡献,先把所有集合能做出的贡献预处理,然后从m个集合里面选择贡献 ...

  8. 《python机器学习—预测分析核心算法》笔记1

    参见原书 1.1-1.4节 一.惩罚线性回归模型 基本特性: 1.训练时间快,使用训练好的模型进行预测的时间也快2.应用于高速交易.互联网广告的植入等3.解决回归.分类问题 最重要的特性:能明确指出, ...

  9. yum源配置的三种方法

    (一)yum源概述 yum需要一个yum库,也就是yum源.默认情况下,CentOS就有一个yum源.在/etc/yum.repos.d/目录下有一些默认的配置文件(可以将这些文件移到/opt下,或者 ...

  10. java的mac自动化-自动运行java程序

    本文旨在帮助读者介绍,如果一个测试工程师拿到了mac本,该如何在本地自动运行java代码 首先如图所示写下如下一段代码 package zlr;import org.junit.Test;public ...