美文网首页
MapReduce(3)

MapReduce(3)

作者: 大飞飞_s8 | 来源:发表于2019-08-16 00:04 被阅读0次

##08.16

作业提交

1、客户端submit(),内部创建jobSubmiter waitForCompletion() 每秒轮训结果,如果有变化,打印在控制台,完成,则打印统计计数,失败,打印失败原因

2、jobSubmiter相资源管理器申请应用ID,用于mr作业ID,

3、检查输出说明,如果没有指定输出目录或者输出目录已经存在,则抛出异常,作业就不会真正提交

4、客户端计算作业分片,如果分片无法计算,输入目录不存在,则抛出异常,作业不提交

5、将运行作业所需资源包括(作业jar文件,配置文件,计算所得分片)复制到一个作业ID为目录的共享文件系统中,作业jar复本默认为10,MapReduce.client.submit.file.replication 参数控制,运行任务时,有很多复本可供节点访问

6、调用资源管理器的subApplication()提交作业

上一节讲完了作业的提交,这一节继续

1、作业初始化

1.1、资源管理器接收到调用它的submitApplication()后,将请求传递给yarn调度器,调度器分配一个容器,然后资源管理器在节点管理器管理下在容器中启动application master应用

1.2、application master是一个Java应用程序,主类mrappmaster 主要接收来自任务的进度和完成报告,因此application master 对作业的初始化是通过创建多个薄记对象来保持对作业的进度的跟踪来完成的。接下来接受保存在共享文件系统,客户端计算的分片,然后对每一个分片创建一个map任务对象以及参数设置的reduce任务对象

1.3、当作业很小时候,master会选择和自己同一个jvm上面运行任务。与一个节点上顺序运行这些任务相比,当master判断在新的容器上分配和运行任务的开销大于并行运行他们的开销时就会发生这种情况,这样的作业称为uberized,或者作为Uber任务

1.4、Uber运行模式对小作业进行优化,不会给每个任务分别申请分配Container资源,这些小任务将统一在一个Container中按照先执行map任务后执行reduce任务的顺序串行执行。

1.5、什么样的模式是Uber模式呢?MapReduce.Uber.task.enable = true

1.5.1、map任务的数量不大于mapreduce.job.ubertask.maxmaps参数(默认值是9)的值;

1.5.2、reduce任务的数量不大于mapreduce.job.ubertask.maxreduces参数(默认值是1)的值;

1.5.3、输入文件大小不大于mapreduce.job.ubertask.maxbytes参数(默认为1个Block的字节大小)的值;

1.5.4、map任务和reduce任务需要的资源量不能大于MRAppMaster(mapreduce作业的ApplicationMaster)可用的资源总量;

1.6、最后在任何任务运行之前,master调用setupjob() 设置outputcommitter,默认file设置outputcommitter设置输出为目录以及临时工作空间

2、任务分配

2.1、如果不满足Uber模式,则master向资源管理器为所有的map reduce申请容器,map优先级高于reduce,因为多有的map必须执行完毕在reduce排序开始之前。5%的map任务完成才发出申请reduce容器请求

2.2、reduce可以在任意节点完成,但是map有数据本地化的限制

2.3、内存和CPU资源申请也会完成,默认1024m,一个虚拟内核,四个参数控制MapReduce.map.memory.mb MapReduce.reduce.memory.mb MapReduce.map.cpu.vcores MapReduce.reduce.cpu.vcores

3、任务执行

3.1、容器分配完毕,master与节点管理器通信启动容器,容器任务由yarnchild类启动Java应用,运行任务之前,资源本地化,包括jar,配置,分布式缓存文件

4、作业进度和状态更新

4.1、构成进度的所有操作,1.读入一条记录mapper或reducer,2.写入一条记录mapper或reducer 3.设置状态描述,reporter或taskattemptcontext setStatus() 4.增加计数器值reporter或taskattemptcontext increment() 5.调用reporter或taskattemptcontext progress

4.2、任务运行时,子进程和master每三秒通过umbilical通信一次,master汇聚成视图

4.3、客户端每秒运轮训master接收最新状态,MapReduce.client.progressmonitor.pollinterval 设置

5、作业完成

5.1、当master收到最后一个任务完成,便把作业状态设置为完成

5.2、waitforcompletion方法完成

5.3、可以设置MapReduce.job.end-notification.url属性来设置

5.4、master和作业容器清理状态,outputcommitter调用commitjob 作业信息存档


上回话完传说时代,此回讲半信史时代 公元前二十三世纪-公元前八世纪


夏 公元前2205年

姚重华传位给姒(si)文命 ,大禹,大禹智慧超群,有一天,有人呈上美酒,大禹喝得伶仃大醉,第二天醒来,大臣们对他说:“酒太好喝了,正因为如此,后世一定有人为他家破国亡”,大禹下令禁酒,但是酒是世界上谁都抵挡不了的诱惑,所以后世不断应验

大禹将全国分为九州,冀州、兖(yan)州、青州、徐州、豫州、雍州、凉州、扬州、荆州

大禹在位8年,一百岁时,死在出巡会稽(河南伊川),传位姒启,姒启传位姒太康,姒太康爱打猎,打猎跑得太远,被有穷部落酋长后羿切断归路,逃到登封。后羿立太康弟弟仲康继位,后羿大权在握

后羿传奇人物,神射手,妻嫦娥

仲康传位儿子姒相,后羿不高兴做幕后,赶下姒相,姒相东逃投奔斟灌部落(河南清丰),后羿没有心机,被自己认为最忠心的大将寒浞杀死,寒浞即位

寒浞取后羿妻,已不是嫦娥,生两个儿子,令儿子讨伐斟群,斟灌部落,太康早已死,姒相战役中被杀,留下怀孕的妻子生出少康。

少康后投奔蒲阪的虞部落,前2079年,少康复国。

前1819年,姒履癸(gui),用尽酷刑,商部落,子天乙前1766年发动攻击,夏桀死,夏朝亡。

相关文章

网友评论

      本文标题:MapReduce(3)

      本文链接:https://www.haomeiwen.com/subject/pkjxsctx.html