MapReduce是什么?

MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,MapReduce程序本质上是并行运行的,因此可以解决海量数据的计算问题.

MapReduce任务过程被分为两个处理阶段:map阶段和reduce阶段.每个阶段都以键值对作为输入和输出.用户只需要实现map()和reduce()两个函数即可实现分布式计算.

MapReduce的组成部分

1、JobClient(客户端)

  用户编写的MapReduce程序通过客户端提交到JobTracker

2、JobTracker

  这是一个master服务,程序启动后,JobTracker负责资源监控和作业调度。JobTracker监控所有的TaskTracker和job的健康状况,一旦发生失败,即将之转移到其他节点上,同时JobTracker会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器,而调度器会在资源出现空闲时,选择合适的任务使用这些资源。一个Hadoop集群只有一个JobTracker,存在单点故障的可能。

3、TaskTracker

  运行在多个节点上的slaver服务。TaskTracker主动与JobTracker通信接受作业,并负责直接执行每个任务。TaskTracker 会周期性地通过Heartbeat将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker 发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)。

MapReduce作业和任务

  MapReduce作业(job)是用户提交的最小单位,而Map任务/Reduce任务(task)是MapReduce计算的最小单位。

  当用户向Hadoop提交一个MapReduce作业时,JobTracker的作业分解模块会将其拆分为任务交由各个TaskTracker执行,在MapReduce计算框架中,任务分为两种——Map任务和Reduce任务。

  一个TaskTracker能够启动的任务数量是由TaskTracker配置的任务槽(slot)决定的,槽又分为Map槽和Reduce槽,并且Map任务只能使用Map槽,Reduce任务只能使用Reduce槽。

MapReduce流程分析

作业提交:

  1.由JobClient启动一个作业。

  2.向JobTracker请求一个作业ID。

  3.将运行作业所需要的资源(包括作业jar文件、第三方jar文件等)复制到HDFS下的特定目录,供作业运行时使用。

  4.调用JobTracker的submitJob方法告知JobTracker作业准备执行。

作业初始化:

  5.当JobTracker收到对其submitJob方法的调用后,会将此调用交由作业调度器进行调度,并对其初始化,创建一个表示正在运行作业的对象。

  6.为了给TaskTracker分配任务,必须先从HDFS系统中获取已计算好的输入分片信息。然后创建Map任务和Reduce任务。

任务分配:

  7.TaskTracker每隔一段时间会给JobTracker发送一个心跳,告诉JobTracker它是否存活、节点资源使用情况、各个任务的状态等,如果JobTracker觉得TaskTracker已经准备好了,那么JobTracker会给TaskTracker分配一个新任务。

任务执行:

  8.TaskTracker在接到启动任务的命令后,会把作业的jar文件、第三方jar文件等作业所需要的文件复制到TaskTracker所在的节点的本地目录。

  9.接着TaskTracker会新建一个TaskRunner实例来运行任务,TaskRunner启动一个JVM(步骤9)运行每个任务(步骤10)。

任务完成:

  当JobTracker收到最后一个任务已完成的通知后(通常是Reduce任务),便把作业的状态设置为成功,JobClient会将作业完成的消息在控制台打印。最后JobTracker会清空作业的工作状态,并让TaskTracker也清空作业的工作状态。

参考:

http://weixiaolu.iteye.com/blog/1474172

《hadoop海量数据处理技术详解与项目实战》

MapReduce工作机制的更多相关文章

  1. hadoop MapReduce 工作机制

    摸索了将近一个月的hadoop , 在centos上配了一个伪分布式的环境,又折腾了一把hadoop eclipse plugin,最后终于实现了在windows上编写MapReduce程序,在cen ...

  2. MapReduce工作机制——Word Count实例(一)

    MapReduce工作机制--Word Count实例(一) MapReduce的思想是分布式计算,也就是分而治之,并行计算提高速度. 编程思想 首先,要将数据抽象为键值对的形式,map函数输入键值对 ...

  3. hadoop知识点总结(一)hadoop架构以及mapreduce工作机制

    1,为什么需要hadoop 数据分析者面临的问题 数据日趋庞大,读写都出现性能瓶颈: 用户的应用和分析结果,对实时性和响应时间要求越来越高: 使用的模型越来越复杂,计算量指数级上升. 期待的解决方案 ...

  4. MapReduce06 MapReduce工作机制

    目录 5 MapReduce工作机制(重点) 5.1 MapTask工作机制 5.2 ReduceTask工作机制 5.3 ReduceTask并行度决定机制 手动设置ReduceTask数量 测试R ...

  5. 浅谈MapReduce工作机制

    1.MapTask工作机制 整个map阶段流程大体如上图所示.简单概述:input File通过getSplits被逻辑切分为多个split文件,通通过RecordReader(默认使用lineRec ...

  6. [hadoop读书笔记] 第五章 MapReduce工作机制

    P205 MapReduce的两种运行机制 第一种:经典的MR运行机制 - MR 1 可以通过一个简单的方法调用来运行MR作业:Job对象上的submit().也可以调用waitForCompleti ...

  7. yarn/mapreduce工作机制及mapreduce客户端代码编写

    首先需要知道的就是在老版本的hadoop中是没有yarn的,mapreduce既负责资源分配又负责业务逻辑处理.为了解耦,把资源分配这块抽了出来,形成了yarn,这样不仅mapreudce可以用yar ...

  8. 图文详解MapReduce工作机制

    job提交阶段 1.准备好待处理文本. 2.客户端submit()前,获取待处理数据的信息,然后根据参数配置,形成一个任务分配的规划. 3.客户端向Yarn请求创建MrAppMaster并提交切片等相 ...

  9. MapReduce的工作机制

    <Hadoop权威指南>中的MapReduce工作机制和Shuffle: 框架 Hadoop2.x引入了一种新的执行机制MapRedcue 2.这种新的机制建议在Yarn的系统上,目前用于 ...

随机推荐

  1. Maximum Depth of Binary Tree 解答

    Question Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along ...

  2. 2.8 Classes of Restricted Estimators

    根据所加限制的不同,可以将模型分为以下几类 RSS+Roughness penalty $PRSS(f;\lambda)=RSS(f)+\lambda J(f)$ 其中$J(f)$为对函数$f$的pe ...

  3. Yougth的最大化(好题,二分查找 0 1分数规划)

    Yougth的最大化 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价 ...

  4. Serializable在C#中的作用——.net中的对象序列化

    序列化是指将对象实例的状态存储到存储媒体的过程,在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流,在随后对对象进行反序列化时,将创建出与 ...

  5. differ比较两个字符串的差异

    "abcde","abdefk"  ---->-c,+f,+k "aba","aababb"    -----&g ...

  6. 利用JPEGImageEncoder进行简单的图片压缩

    import java.awt.Dimension; import java.awt.Image; import java.awt.image.BufferedImage; import java.i ...

  7. Java Calendar获取年、月、日、时间

    Java Calendar获取年.月.日.时间 Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00" ...

  8. JQuery中如何动态修改input的type属性

    代码如下: jQuery(".member_id").focus(function() { jQuery(this).val(''); }).blur(function() { i ...

  9. 禁止Chrome浏览器缓存的方法

    web开发的人经常chrome和firefox作为开发调试工具,有些时候需要禁止chrome浏览器缓存,最近也用到禁止缓存,以下介绍几种禁止chrome浏览器缓存的方法作为记录. HTML: < ...

  10. SQL Server 锁的 8 种类型

    第1种. 共享锁.由读取查寻产生. 第2种. 意向锁.用意向锁来表示有将要获得某一资源的意向. 第3种. 更新锁.在修改数据前获得. 第4种. 排它锁.用于独占某一资源时获得. 第5种. 架构锁.运行 ...