摘要
yarn在hadoop大数据生态圈中,是一个资源管理调度的角色。在伪分布式架构中,ResourceManager只有一个,这样容易产生单点故障问题。在生产中,一般会部署HA的高可用架构。这样,在active RM挂掉后,standby RM会切换为active状态,并对外提供服务。
架构设计
yarn HA架构如图所示:
RM:
在ZooKeeper上会有一个/yarn-leader-election/yarn1的锁节点,所有的ResourceManager在启动的时候,都会去竞争写一个Lock子节点:/yarn-leader-election/yarn1/ActiveBreadCrumb,该节点是临时节点。ZooKeepr能够为我们保证最终只有一个ResourceManager能够创建成功。创建成功的那个ResourceManager就切换为Active状态,没有成功的那些ResourceManager则切换为Standby状态。
RM的作用是接收client的请求,接收和监控NM的资源状态汇报,负责资源的调度和分配。启动和监控ApplicationMaster(AM)在NM上启动的container。
NM:nodemanager,节点的资源管理进程,作用是上报节点资源状态,启动container运行task任务,并且汇报task任务执行进度给AM(ApplicationMaster)。这里NM只给active RM汇报,和HDFS HA有区别,datanode是给active和standby两个namenode汇报心跳和块报告。
zkfc:是RM里面的一个线程,在HDFS HA中,zkfc是一个独立的进程。作用是监控RM的健康状态,并执行选举作用。
RMStateStore:
RM会把job的信息存放在zookeeper的/rmstore目录下,active RM会向这个目录写app的信息。当active RM挂掉之后,standby RM会通过zkfc切换为active状态,然后从zookeeper的/rmstore目录下读取相应的作业信息。重新构建作业的内存信息,启动内部服务,开始接受NM的心跳信息,构建集群的资源信息,并且接受客户端的作业提交请求。