Yarn的设计思想
A. Yarn(Yet Another Resource Negotiator)
B. Yarn的基本思想:
将JobTracker啷个主要功能分离成单独的组件,一个全局的ResourceManager和每个应用对应的ApplicationMaster
hadoop1.X和hadoop2.X框架对比图:
hadoop2.X框架图:
Yarn的组件:
A. ResourceManager
a) 一个纯粹的调度器
b) 根据应用程序的资源请求严格限制系统的可用资源
c) 在保证容量、公平性及服务等级的情况下,优化集群资源利用率,让所有资源都得到充分的利用
d) 由可插拔的调度器来应用不同的调度算法,如注重容量调度还是注意公平调度
B. ApplicationMaster
a) 负责与ResourceManager协商资源,并和NodeManager协同工作来执行和监控Container以及他们的资源消耗
b) 有责任与ResourceManager协商并获取合适的资源Container,跟踪他们的状态,以及监控其进展
c) 在真实环境中,每一个应用都有自己的ApplicationMaster的实例,但是也可为一组提供一个ApplicationMaster,比如Pig或者Hive的ApplicationMaster。
C. 资源模型
a) YARN提供了通用的应用资源模型
b) 一个应用可以通过ApplicationMaster请求非常具体的资源
i. 资源名称(包括主机名、机架名以及复杂的网络拓扑)
ii. 内存量
iii. CPU
iv. 其他资源:硬盘和网络的IO
D. ResourceRequest和Container
a) 一个应用程序通过ApplicationMaster请求特定的ResourceRequest来满足资源需求
b) Scheduler会分配一个Container来响应资源请求
c) Container是一种资源分配形式,为应用程序在特定主机上使用资源(如内存、CPU)的权利
d) ApplicationMaster取走Container,并且交给NodeManager,NodeManager会利用相应的资源来启动Container的任务进程