Hadoop3.x基础入门(三)

86 阅读2分钟

YARN

YARN(Yet Another Resource Negotiator)是一种资源调度框架。作为一种通用的资源管理平台,可以运行各种各样的程序。

  • 什么是资源?
    • CPU,内存
  • 好处:
    • 资源统一管理,统一分配,避免浪费

YARN -- 主从架构 YARN由一个ResourceManager和多个NodeManager共同组成。

ResourceManager

ResourceManager是一个全局的资源管理器

  • 功能
    • 追踪活着的NodeManager及集群中可用资源
    • 启动、监控Application Master
    • 为应用或者任务定位资源
  • 主要组件
    • 调度器(Scheduler)
    • 应用程序管理器(Applications Manager)

NodeManager

  • 功能
    • 监控本节点资源使用情况,并上报给ResourceManager
    • 以容器(Container)的形式提供计算资源
    • 管理(Container)容器中运行的进程

Application Master

  • 功能:
    • 为应用内的任务申请资源
    • 任务的监控、容错
    • 负责协调来自ResourceManager的资源,并通过NodeManager监视Container的执行和资源使用情况

Container

YARN中以Container为资源分配单位。YARN会为每个任务分配一个Container,且该任务只能用该Container指定数量的资源。Container是一个动态资源划分单位。

YARN应用提交过程

  1. 客户端向ResourceManager提交任务,并请求一个Application Master
  2. ResourceManager找到一个运行Container的NodeManager,并在该Container上启动Application Master
  3. Application Master向ResourceManager进行注册。ResourceManager获得Application Master信息。客户端和Application Master交流,向Application Master发送一个满足自己需求的资源请求
  4. Application Master向ResourceManager发送一个资源请求
  5. Container被成功分配,Application Master与NodeManager交流,Task在启动的Container运行
  6. 任务完成后,Application Master向ResourceManager取消注册并关闭,把所有的Container归还给系统。

YARN调度器

  • FIFO Scheduler
  • Capacity Scheduler
  • Fair Scheduler

FIFO Scheduler

先进先出调度器,顾名思义,是一种先进先出的队列。不太适合使用,因为会造成大任务阻塞小任务的情况。

Capacity Scheduler

容量调度器。在xml文件中配置,设计容量调度器队列资源分配。当任务占有资源没有达到所设置的资源上限,且系统中有资源空闲时,即没有任务在用该资源,可以进行资源抢占。利用百分比进行配置,可以配置无上限给资源。

Fair Scheduler

公平调度器。在xml文件中配置,设计权重。同一个资源内,队列之间彼此是公平共享的。