MapReduce工作机制
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工作机制的更多相关文章
- hadoop MapReduce 工作机制
摸索了将近一个月的hadoop , 在centos上配了一个伪分布式的环境,又折腾了一把hadoop eclipse plugin,最后终于实现了在windows上编写MapReduce程序,在cen ...
- MapReduce工作机制——Word Count实例(一)
MapReduce工作机制--Word Count实例(一) MapReduce的思想是分布式计算,也就是分而治之,并行计算提高速度. 编程思想 首先,要将数据抽象为键值对的形式,map函数输入键值对 ...
- hadoop知识点总结(一)hadoop架构以及mapreduce工作机制
1,为什么需要hadoop 数据分析者面临的问题 数据日趋庞大,读写都出现性能瓶颈: 用户的应用和分析结果,对实时性和响应时间要求越来越高: 使用的模型越来越复杂,计算量指数级上升. 期待的解决方案 ...
- MapReduce06 MapReduce工作机制
目录 5 MapReduce工作机制(重点) 5.1 MapTask工作机制 5.2 ReduceTask工作机制 5.3 ReduceTask并行度决定机制 手动设置ReduceTask数量 测试R ...
- 浅谈MapReduce工作机制
1.MapTask工作机制 整个map阶段流程大体如上图所示.简单概述:input File通过getSplits被逻辑切分为多个split文件,通通过RecordReader(默认使用lineRec ...
- [hadoop读书笔记] 第五章 MapReduce工作机制
P205 MapReduce的两种运行机制 第一种:经典的MR运行机制 - MR 1 可以通过一个简单的方法调用来运行MR作业:Job对象上的submit().也可以调用waitForCompleti ...
- yarn/mapreduce工作机制及mapreduce客户端代码编写
首先需要知道的就是在老版本的hadoop中是没有yarn的,mapreduce既负责资源分配又负责业务逻辑处理.为了解耦,把资源分配这块抽了出来,形成了yarn,这样不仅mapreudce可以用yar ...
- 图文详解MapReduce工作机制
job提交阶段 1.准备好待处理文本. 2.客户端submit()前,获取待处理数据的信息,然后根据参数配置,形成一个任务分配的规划. 3.客户端向Yarn请求创建MrAppMaster并提交切片等相 ...
- MapReduce的工作机制
<Hadoop权威指南>中的MapReduce工作机制和Shuffle: 框架 Hadoop2.x引入了一种新的执行机制MapRedcue 2.这种新的机制建议在Yarn的系统上,目前用于 ...
随机推荐
- 一 VC2008环境中ICE的配置
VC2008环境中ICE的配置 ICE 3.4.0的下载页面 http://www.zeroc.com/download_3_4_0.html 环境变量配置 1.Ice-3.4.0安装到c:\Ice ...
- 有一种acm题目叫做,奇葩!
本文全然没有技术含量,纯粹是娱乐. 我事实上想写点东西.可是近期好像做计算几何做得太多了,一种想说说不出东西的感觉,唯有写一下一些奇葩的题目了. HDU3337:Guess the number pi ...
- poj 3436 (最大流)
题意:每台电脑共有p种零件,现在有n台机器,给出n台机器每台需要的一些种类零件当原料(0代表不需要,1代表必须要,2代表可有可无)和输出的产品零件.问怎么安排生产线使生产出来零件可以组装的电脑最多. ...
- ORACLE物理存储结构
1.查看数据库实例基本信息: SQL> SELECT DBID,NAME,CREATED,LOG_MODE,OPEN_MODE,FORCE_LOGGING,CURRENT_SCN,FLASHBA ...
- VLC播放器架构剖析
VLC采用多线程并行解码架构,线程之间通过单独的一个线程控制所有线程的状态,解码器采用filter模式.组织方式为模块架构 模块简述:libvlc 是VLC的核心部分 ...
- 线程间通信的三种方式(NSThread,GCD,NSOperation)
一.NSThread线程间通信 #import "ViewController.h" @interface ViewController ()<UIScrollViewDel ...
- ‘Microsoft.Jet.OLEDB.4.0’ provider is not registered
正如以下msdn论坛所述,Microsoft.Jet.OLEDB.4.0只有32bit,所以我们必须compile application to x86 platform. http://social ...
- PDO扩展使用方法
pdo扩展为php访问数据库提供了一个轻量级的一致接口,pdo提供了一个数据访问抽象层,这意味着不管使用哪种数据库,都可以使用相同的函数来查询和获取数据. $dbms='mysql'; //数据库类型 ...
- CodeForces 501B - Misha and Changing Handles
有N个改名的动作,输出改完名的最终结果. 拿map做映射 #include <iostream> #include <map> #include <string> ...
- Sicily 1790. Single Round Match
高进度求余 或者 将一个数奇位上的数字与偶位上的数字分别加起来,再求它们的差,如果这个差是11的倍数(包括0),那么,原来这个数就一定能被11整除. #include <iostream> ...