Yarn的产生
在Hadoop1.x版本中, 存在的最大的问题就是资源管理问题,就是资源管理问题!!
随着技术的发展, 人们已经不再满足Hadoop集群中只使用mapreduce一个计算框架(例如: spark mapreduce Mars 等一列计算框架)
人们更希望有一套合理的管理机制, 来控制整个集群的资源管理,于是yarn诞生了
Yarn的组成
1, ResourceManager 是全局资源管理器***(RM)***
2, NodeManager 是节点资源任务管理器***(NM)***
我们可以理解成RM 和 NM 就是Yarn
一,Yarn的一个基本架构
1, Yarn在总体设计思想上和HDFS大体是差不多的, 都是主从关系
在Hdfs中 NameNode是主节点, DataNode是从节点
在Yarn中 RM是主节点, NM是从节点
2, 详细讲解一下RM的组成部分
RM里面还有两个组成部分:(Hadoop 权威指南)
- 调度器 Scheduler
- 应用程序管理器 Application Manager
二, 应用程序管理器 Application Manager
以下简称为: AM
AM 主要就是负责接收 client端传输的 job 请求, 为应用(比如mapreduce程序)分配第一个 Container来运行 Application Master, 还有就是负责监控 Application Master, 并且在遇到失败的时候重启 Application Master
容器(Container)这个东西是Yarn对资源做的一层抽象。就像我们平时开发过程中,经常需要对底层一些东西进行封装,只提供给上层一个调用接口一样,Yarn对资源的管理也是用到了这种思想。
如上所示,Yarn将CPU核数,内存这些计算资源都封装成为一个个的容器(Container)。
三, Scheduler 调度器
简单来说就是为了让每一个节点都充分地利用起来, 并且合理地分配和调度的一种管理器.
值得注意的是: 调度器 真的是一个纯调度器, 他不负责从事任何具体的和应用程序相关的工作, 比如运行 map任务 或者 reduce 任务, 不是他的活; 监控程序, 跟踪程序也不是他的活
调度器 又分为三种
- 容量调度器
- 公平调度器
- 队列调度器
四, Application Master
以下简称 AMS
当我们正常提交一个 mapreduce 任务的时候,
例如: hadoop jar xxx.jar命令
我们在后台jps查看一下进程的时候, 会多了一个MRAppMaster的进程这个就是Application Master, 它其实就是一个java程序, 只不过它的类名叫做 MRAppMaster
ApplicationMaster 负责监控MAP任务和 reduce 任务, 用户体提交的每一个 mapreduce程序都会产生一个AMS, 这个AMS就是负责整个任务的一个管理者
图示如下:
Application Master主要功能
- 与RM 调度器 RS 协商获取执行资源(图中没有画出来)
- 与其它的NM 通信 让他们来启动任务、停止任务 其中涉及到了一个东西: Container
- 监控所有其下的任务执行状态(map, reduce), 如果失败, 则会重新启动任务来申请资源
Yarn全面运行流程图