MapReduce的工作机制

转载 2013年12月04日 16:58:07


    最近开始学习Hadoop和Hbase的相关内容,把自己在看的《Hadoop:The Definitive Guide》里的内容总结一下,有助于理解,也就是温故而知新了。首先是了解Hadoop中的MapReduce工作机制。MapReduce作业的运行过程如图6-1所示。包含4个独立的实体:(1)Client:提交MapReduce作业,(2)JobTracker:协调作业的运行。(3)TaskTracker:运行作业划分后的Map任务或Reduce任务。(4)Shared FileSystem(一般为HDFS),用来在其他实体间共享作业文件。

                    

 1.作业的提交

Job的waitForCompletion(true)方法所实现的作业提交过程如下:向jobtracker请求一个新的作业ID,见步骤2。检查作业的输出说明。计算作业的InputSplit。将运行作业所需要的资源(包括作业JAR文件、配置文件和计算所得的输入文件)复制到一个以作业ID命名的目录下jobtracker的文件系统。作业JAR的副本由mapred.submit.replication属性控制(默认值为10),见步骤3。告知jobtracker作业准备执行,见步骤4。

2.作业初始化

JobTracker会把作业放入一个内部队列中,交由job scheduler进行调度,并对其进行初始化(见步骤5)。为了创建任务运行列表,作业调度器首先从共享文件系统中获取Job已计算好的InputSplit的信息(见步骤6)。然后为每个InputSplit创建一个map任务。

3.任务的分配

TaskTracker定期发送“心跳”(heartbeat)给JobTracker.“心跳”告知jobtracker,tasktracker是否还存活,同时也充当两者之间的消息通道(见步骤7)。在jobtracker为tasktracker选择任务之前,jobtracker必须先选定任务所在的作业。在Hadoop中,MapReduce的调度器可以选择,默认的调度器是原始的基于队列的FIFO调度器,还有两个多用户调度器,分别名为Fair Scheduler和 Capacity Scheduler。一旦选择好作业,jobtracker就可以为该作业选定一个任务。对于map任务和reduce任务,tasktracker有固定数量的任务槽。

4.任务的执行

tasktracker已经被分配一个任务,下一步是运行该任务。第一步,通过从共享文件系统把作业的JAR文件复制到tasktracker所在的文件系统。同时,tasktracker将应用程序所需要的全部文件从分布式缓存复制到本地磁盘(见步骤8)。第二步,tasktracker为任务新建一个本地工作目录,并把JAR文件中的内容解压到这个文件夹下。第三步,tasktracker新建一个TaskRunner实例来运行该任务。TaskRunner启动一个新的child JVM(见步骤9)来运行每个任务。

shuffle和排序

map函数开始产生输出时,它利用缓冲的方式写到内存,并处于效率的考虑进行预排序。图6-4展示了这个过程。

每个map任务都有一个环形内存缓冲区,用于存储任务的输出。

Continue

MapReduce的工作机制

我要这天,再遮不住我眼, 要这地,再埋不了我心, 要这众生,都明白我意, 要那诸佛,都烟消云散! ——《悟空传》 1、概述1.1 定义Mapre...
  • zhoutaochun
  • zhoutaochun
  • 2017年12月21日 21:36
  • 64

MapReduce工作机制

运行流程当你在MapReduce程序中调用了Job实例的Submit()或者waitForCompletion()方法,该程序将会被提交到Yarn中运行 其中的过程大部分被Hadoop隐藏起来了,对...
  • qq1010885678
  • qq1010885678
  • 2016年05月07日 12:54
  • 3914

mapreduce 的工作机制

本节将会从作业的角度来解释一个作业是如何在Hadoop的MapReduce计算框架下提交、运行等。 一个MapReduce作业运行过程如图 作业提交 用户的MapRedu...
  • u010801439
  • u010801439
  • 2017年05月09日 10:43
  • 242

Hadoop2.6(新版本)----MapReduce工作原理

最近在研究Hadoop,发现网上的一些关于Hadoop的资料都是以前的1.X版本的,包括MapReduce的工作原理,都是以前的一些过时了的东西,所以自己重新整理了一些新2.X版本的MapReduce...
  • tanggao1314
  • tanggao1314
  • 2016年04月28日 17:01
  • 19785

MapReduce的工作机制

MapReduce作业的运行过程如图6-1所示。包含4个独立的实体:(1)Client:提交MapReduce作业,(2)JobTracker:协调作业的运行。(3)TaskTracker:运行作业划...
  • wisgood
  • wisgood
  • 2013年11月23日 09:36
  • 823

《hadoop权威指南》学习笔记-MapReduce工作机制(上)

运行作业的方式通常有两种,一种是通过Job的submit()方法来提交任务,另一种是通过waitForCompletion()(如果作业没有提交就提交作业,然后一直等待作业执行完成)。 mapred....
  • summerDG
  • summerDG
  • 2013年11月18日 21:43
  • 2622

Mapreduce工作流程

1、mapreduce实际处理流程mapreduce 其实是分治算法的一种现,所谓分治算法就是“就是分而治之 ,将大的问题分解为相同类型的子问题(最好具有相同的规模),对子问题进行求解,然后合并成大问...
  • GYQJN
  • GYQJN
  • 2015年12月15日 21:02
  • 2561

MapReduce的容错机制

Failures 在现实世界中,难免遇到用户代码的错误、进程崩溃、机器宕机等情况。使用Hadoop的一个好处是它有能力处理这些失败,使你的job能够成功完成。我们需要考虑以下实体的失败:task、a...
  • qiruiduni
  • qiruiduni
  • 2015年09月08日 11:24
  • 1198

MapReduce工作原理学习

MapReduce工作原理学习MapReduce概述2004年,google在OSDI 2014会议上发表了MapReduce(MapReduce: Simplified Data Processin...
  • yingyujianmo
  • yingyujianmo
  • 2016年09月19日 22:47
  • 1008

Hadoop学习笔记(7)-简述MapReduce计算框架原理

1. MapReduce基本编程模型和框架1.1 MapReduce抽象模型大数据计算的核心思想是:分而治之。如下图1所示。把大量的数据划分开来,分配给各个子任务来完成。再将结果合并到一起输出。 注...
  • xummgg
  • xummgg
  • 2016年05月30日 21:08
  • 2243
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MapReduce的工作机制
举报原因:
原因补充:

(最多只允许输入30个字)