Yarn各组件之间的交互

yarn基本思想

Apache Yarn (Yet Another Resource Negotiator)是hadoop的集群资源管理系统

yarn 运行机制

mark

为了在yarn上运行一个应用

  1. 客户端联系Resource Manager 要求它运行一个application master进程
  2. resource manager 找到一个能够在容量中启动application master 的node manager
  3. application master 一旦运行起来后能做些什么都依赖应用本身 4.可能在所处的Container中简单地运行一个计算,并将结果返回客户端;或者是向Resource Manager 请求更多容量,以用于一个分布式运算。

yarn本身不会为应用的各部分彼此间的通信提供任何手段

ResourceManager 资源管理 技术总监

NodeManager 小组长

让ApplicationMaster负责 任务调度 项目经理

yarn计算资源抽象

在yarn中,计算资源被抽象为Container。

每个Container描述

如何获得运行各个任务的Container

如何启动运行

和组件之间的心跳信号

ApplicationMaster与ResourceManager心跳
ApplicationMaster与NodeManager心跳
NodeManager 与 ResourceManager心跳

Yarn调度器&调度算法

Yarn使用队列解决多租房中共享资源的问题。

支持三种调度器:

FIFO调度器

Capacity Scheduler资源调度器

设计思想:

特点

Capacity Scheduler资源分配算法
  1. 选择队列
    • 从跟队列开始,使用深度优先算法找出资源占用率最低的叶子节点
  2. 选择作业
    • 默认按照作业优先级和提交时间顺序选择
  3. 选择Container
    • 取该作业中最高优先级的Container,如果优先级相同会选择满足本地性的Container: Node Local > Rack Local > Different Rack

Fair Scheduler 公平资源调度器

设置思想: 资源公平分配。

具有与Capacity Scheduler 相似的特点。

不同点:

Fair Scheduler - FAIR资源分配算法

总体流程与Capacity Scheduler一致

  1. 选择队列
  2. 选择作业
  3. 选择Container

选择队列和作业使用公平排序算法