Hadoop: The Definitive Guide 4th读书笔记 chapter4: YARN

Anatomy of a YARN Application Run

YARN的架构分两层。1 每个cluster有一个resourceManger。2 每个node有一个node manger管理和监视containers。

运行一个yarn app有这样几步:
1 client 连接resource manager来启动一个application master process
2 resource manager寻找一个node manager来加载这个process。
3 如果需要分布式,则从resource manager那里需求更多的node 并且
4 启动其他的container。
151202yarn

Resource Request

YARN 有一个flexible(想了半天不知道如何翻译)的resourc request机制。一个app可以在任意时间创建resource需求,比如一次性全都创建好,或者动态创建。

其中比较特殊的需求是locality,这是为了充分利用数据读取带宽。当locality需求不能满足是,应该是会按照同一刀架,同一cluster降级。

Application Lifespan

  1. 每个job一个application,就是最传统的MR
  2. 每个workflow或者user session一个app,这个可以从数据缓存等方面提高效率
  3. a long-runnung application shared by different users. 比如以些作为coordination role的应用

我看了下ibm的一篇介绍yarn结构的文章,觉得讲的更清楚。

我们现在稍微改变一下用辞。以下名称的改动有助于更好地了解 YARN 的设计:

ResourceManager 代替集群管理器

ApplicationMaster 代替一个专用且短暂的 JobTracker

NodeManager 代替 TaskTracker

一个分布式应用程序代替一个 MapReduce 作业

主要思想就是每个app自己生成一个AM管理任务执行状态,resource只管理资源。从而分离了之前MR的tasktracker的任务。

Yarn相比mr1的优点

  1. scalability,mr1的jobtracker是瓶颈
  2. High availability
  3. utilization
    • MR1会指定static的slots,map slot和reduce slot不通用
    • YARN 通过node manager管理resource
  4. Multitenance

Scheduling in YARN

Scheduler Options

  1. FIFO
  2. Capacity:留出一部分资源专门跑小任务
  3. Fair 每个任务获得同样的资源(当然也可以有queue的概念)
    • 任务1开始跑,他获得全部资源。
    • 任务2启动,他和任务1对半分资源
    • 任务2结束,任务1重新获得全部资源
      151202yarn_schedule

Delay Scheduling

如果一个request的locality要求某一个特定的node。当要求不能满足时,他会被放在同一刀架的node上。而如果使用delay scheduling,他会有一个等待策略。
当使用延迟调度时,调度器不会简单的使用它所接收到的第一个调度机会,但是它会在放开位置限制以及采用下一个调度机会之前等待,直到所给定的最大调度机会次数发生之前。

Dominant Resource Fairness

fair scheduling在每个任务需要多种资源时,主要看dominant resource,也就是他需求的资源中占集群总资源百分比最大的那个,原文中例子如下

Imagine a cluster with a total of 100 CPUs and 10 TB of memory. Application A requests containers of (2 CPUs, 300 GB), and application B requests containers of (6 CPUs, 100 GB). A’s request is (2%, 3%) of the cluster, so memory is dominant since its proportion (3%) is larger than CPU’s (2%). B’s request is (6%, 1%), so CPU is dominant. Since B’s container requests are twice as big in the dominant resource (6% versus 3%), it will be allocated half as many containers under fair sharing.


本文采用创作共用保留署名-非商业-禁止演绎4.0国际许可证,欢迎转载,但转载请注明来自http://thousandhu.github.io,并保持转载后文章内容的完整。本人保留所有版权相关权利。

本文链接:http://thousandhu.github.io/2015/12/03/Hadoop-The-Definitive-Guide-4th读书笔记-chapter4-YARN/