hadoop入门(15):YARN
简介
- apache hadoop yarn(yet another Resource Negotiator) 是一种新的hadoop资源管理器。
- YARN是一个通用的资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度。
- YARN的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大的好处。
功能说明
资源管理系统:集群的硬件资源,和程序运行相关,比如内存、cpu
调度平台:多个程序同时申请计算资源如何分配,调度的规则(算法)
通用:不仅仅支持MapReduce程序,理论上支持各种计算程序,如Spark、Flink……
架构、组件
- ResourceManager
集群物理层面。
yarn集群中的主角色,决定系统中所有应用程序之间资源分配的最终权限。
接收用户提交,并通过NodeManager分配、管理各个机器上的计算资源。 - NodeManager
集群物理层面。
yarn中的从角色,一台机器上一个,负责管理本机器上的计算资源。
根据ResourceManager命令启动Container容器、监视容器的资源使用情况,并向ResourceManager汇报资源使用情况。 - App Mstr(ApplicationMaster)
App层面。
用户提交的每一个App都包含ApplicationMaster。
应用程序中的老大,负责应用程序中各阶段的资源申请,监督程序的执行情况。 - Client
客户端,提交数据。 - Container容器
资源的抽象。
交互流程
当用户向YARN提交一个应用程序后,YARN分两个阶段执行。
一: 客户端申请资源启动运行本次程序的ApplicationMaster
二: 由ApplicationMaster根据本次程序内部具体情况为它申请资源,并监控它的整个运行流程,直到运行完成。
三: ApplicationMaster启动成功后,首先向ResourceManager注册并保持通信,如此用户就可以直接通过ResourceManager直接查看应用程序运行状态。
四: ApplicationMaster为本次程序内部的各个Task任务向ResourceManager申请资源,并监控其运行状态。
五: 一旦ApplicationMaster申请到资源,便会与对应的NodeManager通信,要求其启动任务。
六: NodeManager为任务设置好环境后,将任务启动命令写到一个脚本当中,并通过运行该脚本启动任务。
七: 各个任务通过RPC协议向ApplicationMaster汇报自己的状态和进度。ApplicationMaster可以根据这些状态在任务失败时重启任务。
八: 应用程序完成后,ApplicationMaster向ResourceManager注销并关闭自己。
资源调度器Scheduler
三种调度器:先进先出调度器(FIFO)、容量调度器(Capacity)、公平调度器(Fair)
Apache版本YARN默认采用容量调度器,可在yarn-site.xml中yarn.resourcemanager.scheduler.class中修改。
容量调度器(Capacity)是hadoop3默认的调度策略。该策略允许多个组织共享整个集群资源,每个组织可以获得集群的一部分计算能力。
通过为每个组织分配专门的队列,再为每一个队列分配一定的集群资源,这样整个集群就可以通过设置多个队列为多个组织提供服务了。
S++