Yarn架构介绍

yarn结构

一、概述

很多文章都有详细介绍Yarn的,在这里就不在进行介绍了。直接进入主题。

二、架构组件

前言:yarn是类似Hadoop的架构,也是主从的的经典架构。

1、ResourceManager

  1. ResourceManager是yarn中主的角色。

  2. ResourceManager是一个全局资源管理器,整个集群中只有一个ResourceManager对外提供服务,负责集群内所有应用资源的管理和分配,处理客户端的请求。

  3. 启动和监控ApplicationMaster,监控NodeManager,资源的分配和调度。

  4. ResourceManager主要有调度器(Scheduler)和应用管理器(Applications Manager)构成

    1. 调度器(Scheduler)
      Scheduler是一个可插拔的插件,根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),根据各个应用需要的资源将系统中的资源进行分配,比如,cpu,内存,磁盘,网络等。Scheduler是一个纯粹的调度器,不负责监控和跟踪应用的执行状态,不负责应用程序在启动失败或者硬件失败的情况下对Job的重启,这些工作由ApplicationMaster来完成。在Hadoop的MapReduce框架中主要有三种Scheduler:FIFO Scheduler,Capacity Scheduler和Fair Scheduler。

      • FIFO Scheduler(先进先出调度器):从Queue队列头获取Job,有空闲资源,直接分配。
      • Capacity Scheduler(容器调度器):多个队列,每个队列FIFO,新任务到达的时候计算队列已有任务(假如15)和容器量(假如3队列,此队列占总容量的20%)的比值(15/0.2=75),每个队列都进行计算,值最小的即为此任务需要进入的队列。考虑资源限制的前提下,对用户提交的任务按优先级和时间顺序进行排序,可以多个队列头的Job一起执行。2.x使用的是此调度器。队列任务不享有其它队列的资源。
      • Fair Scheduler(公平调度器):支持多个队列,队列任务享有其它队列的资源。可以多个队列中的Job一起执行,但在资源不足的情况下,计算每个队列中的Job缺额(实际获得资源与计算资源的差额),缺额越大,越先执行。
    2. 应用管理器(Applications Manager)

      • 负责管理整个系统中的所有应用程序
      • 接受Job的提交请求以及应用程序的提交
      • 为应用分配第一个Container来运行ApplicationMaster
      • 监控ApplicationMaster的运行状态并在运行失败时重启
      • 与调度器协商分配资源以启动ApplicationMaster

2、NodeManager

  1. NodeManager是yarn中从的角色
  2. 每个计算节点运行一个NodeManager,通过心跳(yarn.resourcemanager.nodemanagers.heartbeat-interval-ms)向ResourceManager报备自己节点的咨源信息(CPU、内存、磁盘),启动时向ResourceManager注册计算节点的资源信息
  3. 接受ResourceManager的资源分配请求,分配具体Container给应用并监控Container的使用状态,上报给ResourceManager,并管理自身所在节点Container的生命周期,但是不清楚Container内部的应用信息,应用信息有ApplicationMaster来管理。
  4. 接受ApplicationMaster的命令,处理其请求
  5. 定时向ResourceManager上报自身的健康状态
  6. 集群运行中时,NodeManager和ResourceManager不断的交换信息,来使整个集群达到最佳的运行状态

3、ApplicationMaster

  1. 获取数据分片,任务的监控和容错。
  2. 与ResourceManager通信,为应用程序申请资源,进一步分配给内部任务(Task)。
  3. 协调从ResourceManager获取的资源,通过NodeMananer监控应用程序对资源的执行和使用情况。
  4. 整个yarn中最核心的部分,是yarn对整个集群进行动态资源管理的根本步骤,其动态性主要就是多个Application的ApplicationMaster动态与ResourceManager进行通信,不断对资源进行申请、释放、再申请、再释放的过程。
  5. ResourceManager只会告知ApplicationMaster 哪些Container可用,ApplicationMaster 需要去找NodeManager请求分配具体的Container。

4、Container

  1. Container是yarn中资源的抽象,其封装了CPU、内存,并以Container为单位进行资源分配。
  2. 一个NodeMananer可以有多个Container,但是一个Container不会在多个NodeManager上。
  3. 一个Job或者Application必须运行在一个或者多个Container上。
  4. Container是对任务环境的抽象,是运行环境,是对CPU、内存运行资源的集合。
  5. 目前yarn仅支持CPU、内存两种资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值