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进行汇报,回收资源

hadoop中MapReduce作业的调度过程分析 -- yarn 资源调度

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注销并关闭自己;