码迷,mamicode.com
首页 > 其他好文 > 详细

YARN应用场景、原理与资源调度

时间:2015-04-15 11:08:38      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:

1.Hadoop YARN产生背景

  源于MapReduce1.0

  运维成本 如果采用“一个框架一个集群”的模式,则可能需要多个管理员管理这些集群,进而增加运维成本,而共享模式通常需要少数管理员即可完成多个框架的统一管理。

  数据共享 随着数据量的暴增,跨集群间的数据移动不仅需花费更长的时间,且硬件成本也会大大增加,而共享集群模式可让多种框架共享数据和硬件资源,将大大减小数据移动带来的成本。

  直接源于MRv1在几个方面的缺陷:

                ?扩展性受限
                ?单点故障
                ?难以支持MR之外的计算

  多计算框架各自为战,数据共享困难

                ?MR:离线计算框架

                  ?Storm:实时计算框架

                                                ?Spark:内存计算框架

2.Hadoop YARN基本构成

ResourceManager

整个集群只有一个,负责集群资源的统一管理和调度
详细功能
?处理客户端请求
?启动/监控ApplicationMaster
?监控NodeManager
?资源分配与调度

NodeManager

整个集群有多个,负责单节点资源管理和使用
详细功能
?单个节点上的资源管理和任务管理
?处理来自ResourceManager的命令
?处理来自ApplicationMaster的命令

ApplicationMaster

每个应用有一个,负责应用程序的管理
详细功能
?数据切分
?为应用程序申请资源,并进一步分配给内部任务
?任务监控与容错


Container

?对任务运行环境的抽象
?描述一系列信息
?任务运行资源(节点、内存、CPU)
?任务启动命令
?任务运行环境

3.YARN容错性

ResourceManager
?存在单点故障;
?正在基于ZooKeeper实现HA。
NodeManager
?失败后,RM将失败任务告诉对应的AM;
?AM决定如何处理失败的任务。
ApplicationMaster
?失败后,由RM负责重启;
?AM需处理内部任务的容错问题;
?RMAppMaster会保存已经运行完成的Task,重启后无需重新运行

4.YARN调度框架

双层调度框架
?RM将资源分配给AM
?AM将资源进一步分配给各个Task
基于资源预留的调度策略
?资源不够时,会为Task预留,直到资源充足
?与“all or nothing”策略不同(Apache Mesos)

5.Hadoop YARN资源调度 

YARN资源调度器

多类型资源调度
?采用DRF算法(论文:“Dominant Resource Fairness: Fair Allocation of Multiple Resource Types”)
?目前支持CPU和内存两种资源
提供多种资源调度器
?FIFO
?Fair Scheduler
?Capacity Scheduler
多租户资源调度器
?支持资源按比例分配
?支持层级队列划分方式
?支持资源抢占

YARN资源隔离方案

?支持内存和CPU两种资源隔离
?内存是一种“决定生死”的资源
?CPU是一种“影响快慢”的资源
?内存隔离
?基于线程监控的方案
?基于Cgroups的方案
?CPU隔离
?默认不对CPU资源进行隔离
?基于Cgroups的方案

YARN支持的调度语义

?支持的语义
?请求某个特定节点/机架上的特定资源量
?将某些节点加入(或移除)黑名单,不再为自己分配这些节点上的资源
?请求归还某些资源
?不支持的语义
?请求任意节点/机架上的特定资源量
?请求一组或几组符合某种特质的资源
?超细粒度资源
?动态调整Container资源

6.Hadoop YARN上的计算框架

?离线计算框架:MapReduce
?DAG计算框架:Tez
?流式计算框架:Storm
?内存计算框架:Spark

YARN应用场景、原理与资源调度

标签:

原文地址:http://www.cnblogs.com/xiejin/p/4427711.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!