hadoop中MapReduce作业的调度过程分析 -- yarn 资源调度
Hadoop生态圈中的资源调度工具,莫过于yarn框架了,可以支持各种计算引擎的资源分配与调度实现。以下是关于yarn框架的具体说明分析。首先看看它的组成结构。,
1. 主节点ResourceManager:
(1)YARN 集群的主节点 ResourceManager 的职责:
1)处理客户端请求
2)启动或监控 MRAppMaster
3)监控 NodeManager
4)资源的分配与调度
(2)两个组件:
1)应用程序管理器ApplicationsManager(ASM):
负责管理所有的application----mr计算程序----wordcount程序
负责管理application的状态,分配application的运行的资源
2)调度器Scheduler:
负责每一个application任务的资源调度
负责application的调度
FIFO(单一队列调度器):FIRST IN FIRST out
先提交的任务先执行 后提交的任务后执行
FAIR(公平调度器):
第一个任务来了: 所有的资源全部跑
第二个任务来了:两个任务平均分配资源,各占用一半的资源
第三个任务来了:各占1/3
CAPACITY(计算能力调度器):
多个队列,每个队列都是先进先出模式
手动设置
任务1:1T 任务2:9T
根据实际的任务量进行资源配置
10% 90%
根据不同的业务部门:
报表:60% 其他:40%
2. 从节点NodeManager:
(1)YARN 集群的从节点 NodeManager 的职责:
1)管理单个节点上的资源
2)处理来自 ResourceManager 的命令
3)处理来自 MRAppMaster 的命令
(2)虚拟资源容器的方式(Container):
Container 容器是一个抽象出来的逻辑资源单位。容器是由 ResourceManager Scheduler 服务
动态分配的资源构成,它包括了(封装)该节点上的一定量 CPU,内存,磁盘,网络等信息,MapReduce
程序的所有 Task 都是在一个容器里执行完成的,容器的大小是可以动态调整的
Container----1个maptask任务/1个reducetask任务
小文件执行的时候:
container的启动和销毁过程的时间大于计算的时间 不划算
大量小文件的时候:
uber:false/true
拼车模式运行-----一个container中可以运行10个maptask的小任务;
3. yarn的资源调度:
(1)客户端进行应用程序提交的时候,先提交给resourcemanager
(2)resourcemanager会给客户端返回一个节点,用于启动MRAppmaster
(3)rm(ASM)在对应的节点上先启动Container,并在Container中启动MRAppmaster(在nodemanager上)
(4)MRAppmaster向resourcemanager申请程序运行资源,包括maptask和reducetask的资源
(5)resourcemanager会给MRAppmaster返回maptask和reducetask运行的资源节点,其中会优先返回
需要计算数据本地化存在的节点
(6)MRAppmaster到对应的节点上启动Container,在container中启动maptask和reducetask任务
(7)maptask、reducetask向MRAppmaster进行汇报---进度---状态
(8)当所有的maptask和reducetask任务都执行完毕的时候MRAppmaster向resourcemanager进行汇报,回收资源
MapReduce的作业提交过程分析:
job提交:
(1)客户端向resourcemanager发送提交job的请求
(2)resourcemanager会进行检查,检查通过,则会返回一个applicationID(全局唯一的,任务提交先后的标识)
和一个共享资源路径(hdfs上的路径:jar)
(3)客户端将共享资源提交到共享资源路径下:job.xml,job.split,job.jar
(4)客户端向resourcemanager返回提交完毕并真正的提交这个任务
(5)resourcemanager会给客户端返回一个节点,用于启动MRAppmaster
(6)到对应的节点上启动container并启动MRAppmaster
(7)MRAppmaster首先初始化job并生成一个作业簿,去共享资源路径下访问共享资源获取切片信息以及配置文件信息等
(8)MRAppmaster向resourcemanager申请程序运行资源,包括maptask和reducetask的资源
(9)resourcemanager会给MRAppmaster返回maptask和reducetask运行的资源节点,其中会优先返回需要计算数据本地化存在的节点。
(10)到共享资源路径下下载jar包和切片信息等资源
(11)MRAppmaster到对应的节点上启动Container,在container中启动maptask任务
(12)maptask向MRAppmaster汇报自己的状态和进度,存储在作业簿中
(13)MRAppmaster监控到有一个maptask执行完毕,启动reducetask
(14)reducetask向MRAppmaster进行汇报自己的进度和状态
(15)当所有的maptask和reducetask任务都执行完毕的时候就会向MRAppmaster进行汇报,并注销和关闭资源
(16)MRAppmaster向resourcemanager注销并关闭自己;