作者:go800li | 来源:互联网 | 2023-09-13 15:32
hadoop1.x中MapReduce存在的问题:1.单点2.节点压力大YARN:YetAnotherResourceNegotiator(另外一种资源协调者)是一个通用的资源
hadoop1.x中MapReduce存在的问题:1.单点2.节点压力大
YARN:Yet Another Resource Negotiator(另外一种资源协调者)
是一个通用的资源管理系统,可为上层应用提供统一的资源管理和调度。
它的引入为集群在利用率,资源统一管理和数据共享等方面带来了巨大的好处
YARN架构:
核心组件:
ResourceManager
NodeManager
ApplicationMaster
Container
master和slaves结构:一个ResourceManager对应多个NodeManager。
ResourceManager在整个集群中处于活跃状态的只有一个,负责集群资源的统一管理和调度
- 处理客户端发起的请求(启动/杀死应用程序)
- 启动/监控ApplcationMaster,如果AM挂了,RM将会在另一个节点上启动AM
- RM要监控NodeManager,
- 整个系统的资源分配和调度
NodeManager:整个集群中有多个,负责自己节点的资源使用和管理
- 定时向RM汇报本节点上资源使用情况和各个Container的运行情况
- 接受和处理来自RM的关于Container启动和停止的各种命令
- 处理来自AM的命令
- 本节点上的资源管理和任务管理
ApplicationMaster:每个应用程序一个AM,负责应用程序的管理。
- 数据的切分
- 为应用程序向RM申请资源(Container),分配内部任务
- 与NM通信以启动/停止任务,Task都是运行在Container中的
- Task的容错
Container:对任务运行环境的封装,CPU,内存等这些资源以及环境变量、启停命令等等与任务相关的信息
Yarn的资源调度(以mapreduce作业提交为例)
- 客户端提交作业请求
- ResourceManager响应一个Application ID
- 上传作业(jar包)到共享文件系统(HDFS)
- 根据NodeManager,RM分配资源
- NodeManager启动application master
- 启动任务(任务的进程叫yarnChild,资源都会本地化)
- 结束
总结:
在Hadoop2中有了yarn之后,我们可以将多种不同类型的作业(MR, Spark,Tez)都运行在一个集群中,统一由yarn来进行调度,充分利用集群的资源