yarn简介
Yarn的全称为(Yet Another Resource negotiator)是hadoop目前内置的资源管理器。其实它的名字很好地描述了Yarn实际上是做什么的。从根本上上说Yarn是为工作在现有的和新的Hadoop集群上而设计的资源调度器。将资源调度从MapReduce数据流中分离出来。
在较高的层次上,可以把Yarn看成是一个集群的操作系统,它为应用程序提供了基本的服务来更好的利用大的、动态的、并行的基础设施资源。用任何语言编写的应用程序都能利用任意规模的Hadoop集群的计算和存储资源。
yarn的系统结构图
yarn主要有三部分组成:ResourceManager、NodeManager、ApplicationMaster
ResourceManager主要由两部分组成:Scheduler和ApplicationManager。
Scheduler主要负责协调集群中各个应用对资源请求的调度和分配。其中Scheduler是一个可插拔的组件,用户可以自己写调度策略,也可以使用scheduler自带的三种调度器的。scheduler自带的三种调度器分别为FIFO Scheduler、Capacity Scheduler、Fair Scheduler。
ApplicationManager:从名字可以看出来是应用程序管理。主要负责管理各种应用程序,负责接收applicationMaster的各种请求。并在应用程序刚刚提交到集群时,为应用程序分配第一个container,为应用程序创建applicationMaster使用。
NodeManager:运行在集群的各个节点上,负责自己所在集群上的资源管理了
接收ResourceManager的请求,分配Container给应用的某个任务
与ResourceManager交换信息以确保整个集群健康平稳的运行
管理所在节点Container的生命周期
管理每个集群上的日志信息
执行yarn上的一些额外任务
ApplicationMaster:是提交到集群的应用程序进程
applicationMaster主要负责与ResourceManager交互申请各种资源。并和NodeManager一起协同工作来运行应用程序的各个任务,然后跟踪各个任务并实时监控各个任务的运行情况。如果有失败的任务还可以重启改失败的任务。