Hadoop从入门到放弃系列------YARN

1、什么是YARN?

YARN是"Yet Another Resource Negotiator"的缩写,顾名思义是Hadoop集群中资源管理的工具,属于Hadoop生态中的基础组件之一。其他的基础组件可以翻看下前两篇:Hadoop从入门到放弃系列------HDFS,Hadoop从入门到放弃系列------MapReduce

2、为什么引入YARN? 

在Hadoop v1.0时代,作业调度全由MapReduce来完成,方式如下图:

Hadoop从入门到放弃系列------YARN_第1张图片

刚开始没什么问题,但随着Hadoop集群的规模扩大和作业量的极具上升,这种模式中Job Tracker就成了瓶颈(IBM在一片论文中给出的Yahoo!的最佳实践是5000个节点集群和40000个作业的并发);并且这种模式计算资源的使用效率也不高。

为了解决上述这些问题,YARN应运而生,取代MapReduce部分功能:负责资源的管理和任务的调度;这一引入可不得了,使得整个Hadoop生态发生了革命性的变化,变得更加灵活、弹性和高效,原因下面会讲到。

2013年第一季度,Yahoo! 使用YARN后,集群规模由40,000所见到32,000个节点,但每月的作业并发量却实现了翻翻达到2600万

 3、YARN简介

Hadoop v1.0 vs Hadoop v2.0

Hadoop从入门到放弃系列------YARN_第2张图片

进入Hadoop v2.0时代后,除了MapReduce的计算框架,Hadoop能支持更多的其他框架了,例如:Spark实时计算框架,Hive类SQL框架,HBase noSQL框架等,这全归功于YARN,将资源管理和任务调度从MapReduce中剥离出来,Hadoop生态才开始变得开放、繁荣起来。

4、YARN组件

YARN的架构如下,包含Resource Manager,Node Manager,Application Master,Container四个组件

Hadoop从入门到放弃系列------YARN_第3张图片

4.1 Resource Manager

  1. 资源分配的最高权威,一个Hadoop集群只会有一个acitve的Resource Manager

  2. 它本身并不处理请求,只是当收到请求后转给真正处理请求的相关节点

  3. 当出现资源争抢时,它是最终的仲裁者,决定可用资源的分配

  4. 根据一定的条件来优化整个集群资源的使用效率

Resource Manager有两个主要的组件

  1. Scheduler
  • 只负责调度,监控及跟踪应用状态的活一概不干;(术业有专攻)

  • 在出现硬件故障或任务跑失败时,它不保证会重跑任务;(任性,Application Manager帮忙)

  • 目前提供两种可选插件:Capacity Scheduler和Fair Scheduler

  1. Application Manager
  • 接收Client端提交的作业
  • 为Application Master启动提供资源
  • 管理在集群中运行的Application Master,并在任务失败时重新启动Application Master Container

4.2 Node Manager

  1. Node Manager是YARN中每个节点上的代理,它管理Hadoop集群中单个计算节点

  2. Node Manager会定期向Resource Manager发送心跳信息来更新node的健康状态

  3. Container的全生命周期管理,监控Container中资源(cpu, mem等)的使用情况

  4. 管理日志

4.3 Application Master

  1. 每一个运行在YARN上的应用程序都被唯一的一个Application Master管理
  2. Application Master负责和Resource Manager Scheduler协商资源,和Node Manager一起工作来运行、管理相应的任务
  3. Resource Manager 为 Application Master分配Containers,这些Containers将会用来运行任务;Application Master也会追踪Containers的状态,监控Containers的运行进度
  4. 向Resource Manager发送自己的心跳信息来更新自己的健康状态和最新的资源需求
  5. 当Container运行完成, Application Master 将会向 Resource Manager注销这个容器;如果是整个作业运行完成,其也会向 Resource Manager 注销自己,这样这些资源就可以分配给其他的应用程序使用了

4.4 Container

  1. Container是某个节点上物理资源的集合,这些资源包括:内存, CPU核心和磁盘等
  2. Container授予 Application Master使用特定主机的特定数量资源的权限
  3. Application Master也是在Container中运行,其在应用程序分配的第一个容器中运行

5、作业的完整运行过程

Hadoop从入门到放弃系列------YARN_第4张图片

你可能感兴趣的:(大数据)