YARN原理

YARN

Yet Another Resource Negotiator
YARN的基本思想:将JobTracker两个主要得功能分离成单独的组件,一个全局的ResourceManager和每个应用对应的ApplicationMaster

YARN的组件

  • ResourceManager
    • 一个纯粹的调度器
    • 根据应用程序的资源请求严格限制系统的可用资源
    • 在保证容量,公平性以及服务等级的情况下,优化集群支援利用率,让所有资源都得到充分利用
    • 有可插拔的调度器来应用不同的调度算法,如注重容量调度还是中医公平调度
  • ApplicationMaster
    • 负责与ResourceManager协商资源,并和NodeManager协同工作来执行和监控Container以及他们的资源消耗
    • 有责任与ResourceManager协商并获取合适的资源Container,跟踪它们的状态,以及监控其进展
    • 在真实环境中,每一个应用都是有自己的ApplicationMaster实例,但是也可为一组应用提供一个ApplicationMaster,比如Pig或者Hive的ApplicationMaster
  • 资源模型
    • YARN提供了通用的应用资源模型
    • 一个应用可以通过ApplicationMaster请求非常具体的资源
      • 资源名称(包括主机名,机架名以及复制的网络拓扑)
      • 内存量
      • CPU
      • 其他资源:磁盘和网络IO等
  • ResourceRequest和Container
    • 一个应用程序通过Application请求特定的ResourceRequest来满足资源需求
    • Scheduler会分配一个Container来响应资源请求
    • Container是一种资源分配形式,为应用程序授予在特定主机上使用资源(如内存,CPU)的权利
    • ApplicationMaster取走Container,并且交给NodeManager,NodeManager会利用相应的资源来启动container的任务进程