Mapreduce编程模型(二)

2.1Mapreduce工作机制

2.1.1提交作业的方式

  1. 通过一个简单的方法调用来运行MapReduce作业Job对象上的submit(),直接将作业提交到Hadoop平台上
  2. 调用Job对象上的waitForCompletion()方法,用于用于提交之前没有处理过的作业,等它完成,客户端会时刻打印作业执行的进度信息。(常用)

2.1.2经典的Mapreduce 1运行机制

包含4个独立的实体:

1)Client,提交MapReduce程序到JobTracker

2)JobTracker,负责资源监控和作业调度 

3)TaskTackker,执行JobTracker发送的指令,向JobTracker汇报资源使用情况和任务执行进度 

4)Task,MapTask解析数据分片并运行map()函数,ReduceTask执行reduce()函数并把结果写入HDFS

Task分为MapTask和ReduceTask 。

  • MapTask将对应的分片迭代解析成一个个键值对,依次调用用户自定义的map()函数进行处理,最终将临时结果写道磁盘上。
  • ReduceTask执行过程分为三个阶段:
Shuffle阶段第一阶段从远程节点上读取MapTask中间结果
Sort阶段第二阶段按照key对key-value进行排序
Reduce阶段第三阶段依次读取<key,value list>调用用户自定义的reduce函数,将最终结果写道HDFS上

2.1.3Shuffle和排序 

Shuffle:将Mapper的输出作为输入传递给Reducer的过程

1.环形缓冲区

        每个map任务都有一个环形缓冲区(Buffer),map将输出写到这个环形内存缓冲区,Buffer是内存中一种首尾相连的数据结构,专门用来存储Key-Value格式的数据。大小为100MB。

2.溢出写

        默认情况下环形缓冲区的大小是100MB,map将输出不断写入到环形缓冲区中,一旦缓冲区的内容达到阈值的80%时,就会启动后台的一个线程,并开始把环形缓冲区的内容写到本地磁盘上。

        在后台线程写入的同时,map会继续将输出数据写入环形缓冲区,如果此时环形缓冲区已经写满,则map会阻塞,直到写入本地磁盘的过程完成,而不会覆盖缓冲区内的已有数据,我们把写入本地磁盘的过程称为溢出写。

3.分区

默认的Partitioner对象通过使用Hash算法来分区。

4.合并Spill文件

当map向环形缓冲区中不断输入时,则会发生环形缓冲区达到溢出写阈值,就会触发溢出写操作,新建一个Spill文件,将Spill文件写入磁盘,因此在map任务写完其最后一个输出记录之后,会有多个Spill文件。在map任务完成之前,这些Spill文件会根据情况合并成一个大的已分区已排序的输出文件。

Shuffle过程的三次排序

1)Shuffle的Map阶段,map函数产生输出时,写入环形缓冲区,当缓冲区达到阀值时写入磁盘;写磁盘前先将缓冲区中的数据划分成分区,每个分区中的数据按键进行内排序,即第一次排序。

2)Shuffle的Map阶段,map任务完成前,磁盘上存在多个溢写文件(分好区、排好序),合并溢写文件生成输出文件,合并时需再做一次排序就可使输出文件整体有序,即第二次排序

3)Shuffle的Reduce阶段,需要将多个Map任务的输出文件合并,合并时需再做一次排序就可以使输出文件整体有序,即第三次排序。

MapReduce 提供的三个调度器:

先进先出调度器、公平调度器、计算能力调度器

2.2YARN平台 

2.2.1YARN核心组件及功能

1)ResourceManager(RM),负责所有资源的监控、分配和管理 

2)NodeManager(NM),负责每一个节点的维护

3)ApplicationMaster(AM),负责每一个具体应用程序的调度和协调 

4)RM拥有控制权和资源分配权,AM和RM协商资源、和NM通信、执行并监控task 

 NodeManager:定期将本节点上的资源使用情况上报给RM,同时接收来自AM的命令,以及启动/回收Container。

ApplicationMaster只有获得了Container后才能启动相应的map和reduce任务。

一个应用程序所需要的Container分为两大类:

  1. 一类是可以运行ApplicationMaster的Container,它是由RM向内部的资源调度器申请,用户提交应用程序时,可指定唯一的ApplicationMaster所需要的资源;
  2. 另一类是运行各类任务的Container,它由ApplicationMaster向RM申请,并通过ApplicationMaster与NM通信来启动。

 概述流程:

用户将应用程序提交到RM上,RM为应用程序申请资源,并于某个NM通信,以启动AM。之后AM与RM通信为内部要执行的任务申请资源,得到资源后和NM通信,以启动对应的任务。当所有的任务完成之后,AM向RM注销,整个应用程序结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值