Yarn的产生

yarn如何知道hdfs的存储信息 hadoop 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 权威指南)

  1. 调度器 Scheduler
  2. 应用程序管理器 Application Manager
二, 应用程序管理器 Application Manager

以下简称为: AM

AM 主要就是负责接收 client端传输的 job 请求, 为应用(比如mapreduce程序)分配第一个 Container来运行 Application Master, 还有就是负责监控 Application Master, 并且在遇到失败的时候重启 Application Master

容器(Container)这个东西是Yarn对资源做的一层抽象。就像我们平时开发过程中,经常需要对底层一些东西进行封装,只提供给上层一个调用接口一样,Yarn对资源的管理也是用到了这种思想。

yarn如何知道hdfs的存储信息 hadoop yarn工作原理_资源管理_02


如上所示,Yarn将CPU核数,内存这些计算资源都封装成为一个个的容器(Container)。

三, Scheduler 调度器

简单来说就是为了让每一个节点都充分地利用起来, 并且合理地分配和调度的一种管理器.
值得注意的是: 调度器 真的是一个纯调度器, 他不负责从事任何具体的和应用程序相关的工作, 比如运行 map任务 或者 reduce 任务, 不是他的活; 监控程序, 跟踪程序也不是他的活
调度器 又分为三种

  1. 容量调度器
  2. 公平调度器
  3. 队列调度器
四, Application Master

以下简称 AMS

当我们正常提交一个 mapreduce 任务的时候,

例如: hadoop jar xxx.jar命令

我们在后台jps查看一下进程的时候, 会多了一个MRAppMaster的进程这个就是Application Master, 它其实就是一个java程序, 只不过它的类名叫做 MRAppMaster

ApplicationMaster 负责监控MAP任务和 reduce 任务, 用户体提交的每一个 mapreduce程序都会产生一个AMS, 这个AMS就是负责整个任务的一个管理者

图示如下:

yarn如何知道hdfs的存储信息 hadoop yarn工作原理_yarn如何知道hdfs的存储信息_03


Application Master主要功能

  1. 与RM 调度器 RS 协商获取执行资源(图中没有画出来)
  2. 与其它的NM 通信 让他们来启动任务、停止任务 其中涉及到了一个东西: Container
  3. 监控所有其下的任务执行状态(map, reduce), 如果失败, 则会重新启动任务来申请资源
Yarn全面运行流程图

yarn如何知道hdfs的存储信息 hadoop yarn工作原理_应用程序_04