MapReduce中几个重要组件

一、ResourceManager

  1. ResourceManager是YARN资源控制框架的中心模块,负责集群中所有的资源的统一管理和分配。它接收来自NodeManager的汇报,建立ApplicationMaster,并将资源派送给ApplicationMaster。
  2. ResourceManager包括两部分:
Scheduler:调度器,为每个正在运行的应用程序分配资源
ApplicationsManager:应用程序管理器。提交应用程序,与Scheduler协调资源以启动ApplicationMaster,监控ApplicationMaster的运行状态并在任务失败时重新为ApplicationMaster向Scheduler申请资源以启动它。

二、ApplicationMaster

  1. YARN中每个应用都会启动一个AM,负责向RM申请资源,请求NM启动container,告诉container做什么事情。
  2. 它的主要功能如下:
与ResourceManager协商以获得资源
将得到的任务进一步分配给内部任务
与NodeManager通信以启动或停止任务
监控所有任务的运行状态,并在任务运行失败时为其重新申请资源以重启任务

三、NodeManager

  1. 定期向Resorece汇报本节点的资源使用情况和各个container运行状态
  2. 接收并处理来自Application的container停止或运行请求
  3. 简称NM,NodeManager是ResourceManager在每台机器的上代理,负责容器的管理,并监控他们的资源使用情况(cpu,内存,磁盘及网络等),以及向 ResourceManager提供这些资源使用报告。

四、Container

  1. 封装了某个节点上的内存、CPU、磁盘、网络等资源
  2. YARN会为每个任务分配一个Container,且该任务只能使用Container中描述的资源
  3. 是动态的资源划分单位,根据应用程序的需求动态生成的
  4. 每个节点默认分配8个Container
  5. 是资源容器。YARN中所有的应用都是在container之上运行的。AM也是在container上运行的,不过AM的container是RM申请的。
  6. Container由ApplicationMaster向ResourceManager申请的,由ResouceManager中的资源调度器异步分配给ApplicationMaster
  7. Container的 运行 是由ApplicationMaster向资源所在的 NodeManager 发起的,Container运行时需提供内部执行的任务命令(可以是任何命令,比如java、Python、C++进程启动命令均可)以及该命令执行所需的环境变量和外部资源(比如词典文件、可执行文件、jar包等)。
  8. 一个应用程序所需的Container分为两大类
    运行ApplicationMaster的Container :这是由 ResourceManager (向内部的资源调度器)申请和启动的,用户提交应用程序时,可指定唯一的ApplicationMaster所需的资源;
  运行各类任务的Container:这是由ApplicationMaster向ResourceManager申请的,并由ApplicationMaster与NodeManager通信以启动之。



你可能感兴趣的:(MapReduce中几个重要组件)