文章目录
- YARN基本介绍
- ResourceManager(资源管理)
-
- NodeManager(节点管理)
- ApplicationMaster(主应用程序)
- Container(容器)
YARN基本介绍
YARN是Hadoop为了提供计算节点Master(JT)的扩展性,同时为了支持多计算模型和提高资源的细粒度调度而引入的全新一代分布式调度框架。
其可以支持MapReduce、Tez、Spark、Storm、Imlala、Open MPI等计算引擎。
YARN主要由ResourceManager(RM,资源管理)、NodeManager(NM,节点管理)、ApplicationMaster(AM、主应用程序)、Container(容器)四部分组成。
ResourceManager(资源管理)
其中最为核心的是ResourceManager,它作为全局的资源管理,负责整个系统的资源管理和分配,同时接受来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的资源策略分配给各个应用程序(Application Manager),其内部维护了各个应用程序的ApplicationMaster信息、NodeManager信息以及资源使用信息等。
YARN设计了一套Active/Standby模式的ResourceManager HA框架,在运行期间会有多个ResourceManager并存,并且其中只有一个ResourceManager处于Active状态,其他则处于Standby状态,当前Active节点无法正常工作时,其余处于Standby状态的节点则会通过竞争产生新的Active节点。
主备切换
- 创建锁节点
所有的RM在启动的时候,都会去创建同一个临时节点,只有一个节点能够创建成功。
创建成功的那个RM就切换为Active状态,没有成功的那些RM则切换为Standby状态。 - 注册Watcher监听
所有Standby状态的RM都会向节点注册监听,利用临时节点的特性,你能够快速感知到Active状态的Resource的运行状况。 - 主备切换
当Active的RM出现故障或重启情况,在ZooKeeper创建的临时节点会被删除。此时其他Standby状态的RM都会收到Watcher事件通知,重复步骤1操作。 - 脑裂现象
当RM1为Active出现”假死“状态,导致RM2为Active。当RM1恢复正常时,其依然认为自己还处于Active状态。出现多个Active状态RM,这就是”脑裂“现象。 - 避免脑裂现象
解决方法是在创建节点的时候携带ACL信息,已防止其他RM对该节点更新。
当RM1为Active出现”假死“状态,导致RM2为Active。当RM1恢复正常时会试图更新节点相关数据,但是此时发现其没有权限更新节点数据,也就是说,RM1发现节点不是不是自己创建的,于是就自动切换为Standby状态,避免出现”脑裂“。
NodeManager(节点管理)
ApplicationMaster(主应用程序)
Container(容器)