学习篇-Hadoop-YARN-基础理论
一、Hadoop-YARN-产生背景
-
MapReduce1.x ===> MapReduce2.x
master/slave:JobTracker/TaskTracker
- 存在问题
- JobTracker是单节点的
- 压力大
- 仅仅只能支持mapreduce作业
- 存在问题
-
资源利用率低&运维成本
- 所有的计算框架应该运行在一个集群中,共享一个集群的资源,做到按需分配
-
催生了YARN的诞生
二、Hadoop-YARN-概述
通俗释义:
- Yet Another Resource Negotiator
- 通用资源管理系统
- 为上层应用系统提供统一的资源管理和调度
官网介绍:
-
The fundamental idea of YARN is to split up the functionalities of resource management and job scheduling/monitoring into separate daemons.
- ResourceManager (RM)
- per-application ApplicationMaster (AM)
- YARN的基本思想是将资源管理和作业调度/监视的功能拆分为单独的守护程序。
-
The ResourceManager and the NodeManager form the data-computation framework.
- NodeManager(NM)
- ResourceManager和NodeManager构成数据计算框架
-
The per-application ApplicationMaster is, in effect, a framework specific library and is tasked with negotiating resources from the ResourceManager and working with the NodeManager(s) to execute and monitor the tasks.
- 每个应用程序ApplicationMaster实际上是框架特定的库,其任务是与来自ResourceManager的资源进行协商,并与NodeManager一起执行和监视任务。
三、Hadoop-YARN-架构
-
Client
- 向RM提交任务、终止任务
-
ResourceManager
- 集群中同一时刻对外提供服务的只有1个,负责资源相关
- 处理来自客户端的请求:提交、杀死
- 启动/监控AM
- 监控NM
- 资源相关
-
NodeManager 多个
- 处理任务
- 向RM发送心跳信息、任务的执行情况
- 接受来自RM的请求来启动任务
- 处理来自AM的命令
-
ApplicationMaster
- 每一个应用程序对应一个AM
- AM会向RM申请资源用于在NM上启动对应的Task
- 数据的切分
- 为每个task向RM申请资源(container)
- NodeManager通信
- 任务的监控
-
Container
- 任务的运行抽象
- memory、cpu …
- task是运行在container里面的
- 可以运行am、也可以运行map/reduce task
四、Hadoop-YARN-执行流程
- 1:客户端先提交一个应用程序到YARN上去
- 2:Resource Manager在Node Manager上启动一个Container【Application Master】
- 3:Node Manager响应Resource Manager请求,启动一个Application Master
- 4:Application Master启动之后,需要注册到Resource Manager中,这样就直接通过Resource Manager查看具体的作业情况
- 5:Application Master拿到对应的分配资源,到Node Manager去启动相应的Container
- 6:Node Manager响应Application Master启动对应的Container,执行任务。
- 在运行过程中,Task的运行情况也需要向Application Master进行告知。