序言
在大数据的生态中,hdfs解决了海量数据的存储问题,mapreduce解决了海量数据的计算问题,而在任务的执行和资源统一管理层面,则是使用yarn进行统一调度。
yarn:yet another resouce negotiator,另外一种资源调度器。
yarn
1 为什么会有yarn
hadoop经历了两个大的架构,在1.X版本中,核心只有hdfs和MapReduce,这个里面MapReduce既承担了海量数据的计算问题,而且需要负责相关的任务调度,资源分配,监控恢复任务,成为一个性能瓶颈,在2.X架构中,将MapReduce进行了一个分拆,MapReduce仅仅负责计算问题,而抽取出来的yarn,则作为资源的分配,调度,任务的生命周期管理。
2 yarn架构图(官方文档截取)
Resource Manager:简称RM,资源管理器,负责管理应用程序application的全局计算资源的分配,接收来自客户端的请求,和Node Manager进行通信,检查节点的健康状态,启动调度Application Master。
Application Master:简称AM,管理应用程序的调度和协调,每个应用程序一个,也可以叫做MRAppMaster。
Application:一个MapReduce作业或者是DAG的多个jobs。
NodeManager:运行在每个节点中,简称为NM,节点管理器,主要和RM进行通信,并和ApplicationMaster一起执行和监控任务,监控container容器的资源使用情况。
Container:表示分配的一组包括CPU,内存,网络,磁盘资源的容器。
在RM中,包含两个主要的组件,一个是schedule调度组件,一个是applicationsmanager应用程序管理组件。
3 高可用架构
搭建集群的时候,总是需要高可用架构的,对于RM来说,主要是HA的形式,一个状态是Active,一个状态是Standby,对于NM来说,主要分布式节点,一般的部署方式是对于HDFS的数据节点DataNode,那么就可以部署为Node Manager节点。
在查看RM状态的时候,可以使用如下的命令:
//查看RM的状态,是主还是备
[root@KEL2 logs]# yarn rmadmin -getServiceState rm1
active
[root@KEL2 logs]# yarn rmadmin -getServiceState rm2
standby
//查看Node Manag