yarn的介绍

首先我们先了解一下hadoop1.0版本和hadoop2.0版本的区别。

在hadoop1.0中只有两个模块 hdfs  和  mapReduce

  hdfs负责存储

  mapReduce 负责计算

在hadoop1.0中 所有计算相关的 全部放到了mapReduce上

    mapReduce在运行的时候有两个进程 jobtracker 和 tasktracker

      jobtracker:是整个计算程序的主节点(老大)

             负责进行资源调度(没有资源调度策略,随机调度)

             还负责监控程序运行的状态,对运行失败的应用程序进行重启

             存在单点故障问题,不支持高可用,如果jobtracker宕机了,整个程序就运行不了了

      tasktracker:负责计算程序的执行

            会强行的将计算资源分成两部分  mapslot 和 reduceslot, map任务只能运行在mapslot中,reduce任务只能运行在reduceslot中,当一个应用程序只需要运行map任务

          不需要运行reduce任务的时候,就会造成资源浪费。

            而且这一部分资源没有划分CPU、IO或者网络

所以hadoop1.0中存在着致命的缺陷

  1)单点故障问题

  2)所有的资源调度是随机的,会造成资源浪费

  3)jobtracker的运行压力过大

hadoop2.0进行了改进,将maperduce分成了两部分mapreduce和yarn

  yarn专门负责程序的资源调度

  yarn的概念:

    yarn再启动的时候会有两个进程

      resourcemanager:整个资源调度的老大

        1)负责接收客户端的请求 这个请求时程序运行的请求

        2)接受nodemanager的状态报告,这个状态报告包括nodenamager的资源状态和存活状态

        3)负责整个计算程序的资源调度   调度的运行资源的多少 和  在哪个节点上运行

      nodemanager:负责真正的提供资源  运行计算程序

        1)接收resourcemanager的命令

        2)提供资源运行计算程序

  yarn启动计算及资源调度概念:
    MRAppMaster:单个计算程序的老大   负责帮助当前计算程序向resourcemanager申请资源,
            负责启动maptask任务和reducetask任务 负责监控maptask和reducetask的运行进度
            类似于项目经理

    ASM:applicationsmanager 所有应用程序的管理者  负责调度应用程序


    container:抽象资源容器 封装着一定的cpu io 和网络等资源

    是运行maptask reducetask等的运行资源单位

    1个split对应一个1个maptask  1个maptask分配1个container     1个container在进程中显示的就是1个yarnchild


    scheduler:调度器  调度的是什么时候执行哪个计算程序
      调度器:
        1)FIFO:first in first out 先进先出
        先提交的程序先执行 后提交的程序后执行
        内部维护一个队列


        2)FAIR:公平调度器:

        大家平分资源运行

        假设刚开始只有一个任务 占资源100%

        这时候又来了一个任务 每人占50%

        内部维护一个队列

        3)CAPICITY:计算能力调度器:

        可以按需进行配置使用资源:

        内部可以维护多个队列,多个队列之间可以进行资源分配

        在每个队列中都是执行先进先出的

猜你喜欢

转载自www.cnblogs.com/hongtenglong/p/9333468.html
今日推荐