Hadoop生态分层
YARN应用运行机制
YARN通过两类长期运行的守护进程提供自己的核心服务:管理集群上资源使用的资源管理器(resource manager)、运行在集群中所有节点上且能够启动和监控容器的节点管理器(node manager)。容器用于执行特定应用程序的进程,每个容器都有资源限制(CPU、内存等),一个容器可以是一个Unix进程,也可以是一个Linux cgroup,取决于YARN配置,YARN运行机制如下:
运行机制解析
1.首先,客户端联系资源管理器,要求它运行一个application master进程。
2.然后资源管理器找到一个能够在容器中启动application master的节点管理器。
3.application master启动后行为依赖于应用本身,可能是在所处容器中进行运算,然后两结果返回给客户端;抑或是向资源管理器请求更多的容器。
4.请求更多的容器,用于运行一个分布式计算。
资源请求
资源请求模型:当请求多个容器时,可以指定每个容器需要的计算机资源数量(内存和CPU),还可以指定对容器的本地限制要求。
应用生命期
YARN应用的生命期差异很大,一般按照应用到用户运行的作业之间的映射关系对应用进行分类,有如下分类模型:
模型1:一个用户作业对应一个应用,这是MapReduce采取的方式。
模型2:作业的每个工作流或者每个用户对话对应一个应用。Spark采用这种模型。
模型3:多个用户共享一个长期运行的应用,通常作为一种协调者出现。
YARN中的调度
调度选项
YARN中有三种调度器可用:FIFO调度器(FIFO Scheduler)、容量调度器(Capacity Scheduler)、公平调度器(Fair Scheduler)
FIFO调度器:优点是简单易懂,不需要任何配置,但不适合共享集群。多个作业运作时需要阻塞等待。
容量调度器:以整个集群的利用率为代价,一个独立的专门队列保证小作业一提交就能启动。
公平调度器:不需要预留一定量的资源,调度器会在所有运行的作业之间动态平衡资源。
参考资料:
《Hadoop权威指南》