Apache Hadoop Yarn学习(一):发展和架构组件功能详解

YARN通俗介绍

Hadoop组成

在这里插入图片描述
1.Hadoop HDFS:

一个高可靠,高吞吐量的分布式文件系统,对海量数据的存储

2.Hadoop MapReduce:

一个分布式的资源调度和离线并行计算框架

3.Hadoop Yarn:

基于HDFS,用于作业调度和集群资源管理的框架

4.Hadoop Common:

Hadoop工具包,支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)

YARN的来源(演变)

Hadoop1.0到2.0的演变
在这里插入图片描述
Jobrtacker指的是MapReduce中的管理者
Taskrtacker指的是MapReduce中的工作者
在这里插入图片描述
1.0到2.0最大的区别就是将Jobrtacker两个任务拆分开来
资源管理使用Yarn
作业控制使用AppM(ApplicationMaster)
在这里插入图片描述
Yarn的Master和Slave
在这里插入图片描述
ResourceManager:一个集群只有一个ResourceManager对外提供服务(可能有多个RM)
NodeManager:一个集群有多个NodeManager,通常每个DataNode(数据存储)也是NodeManager(资源调度)角色

关于Yarn的两个问题
在这里插入图片描述
问题一:集群提交任务,是什么决定任务分配到那个节点上?

答:Yarn 集群资源调度系统

问题二:集群提交任务、偶尔成功、偶尔失败(尤其是使用外部配置文件的时候)?

答:程序所需要的数据(配置文件)缺失。有的节点缺失,有的节点不缺失。
解决方法:在所有的节点上存一分程序所需要的数据(配置文件)

是谁来分配呢?

答:Yarn

YARN的概念

Apache Hadoop Yarn(Yet Another Resource ,另一种资源协调者)是一种新的 Hadoop 资源管理器,是一个通用资源管理系统和调度平台,可以为上层应用提供统一的资源管理和调度

在这里插入图片描述
它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大的好处。
可以把Yarn理解成相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序,Yarn为这些程序提供运算所需的资源(内存、CPU)

  • Yarn并不清楚用户提交的程序的运行机制
  • Yarn只提供运算资源的调度(用户程序向Yarn申请资源,Yarn就负责分配资源)
  • Yarn中的管理者角色叫 ResourceManager
  • Yarn中的工作者(具体提供运算资源的角色)叫 NodeManager
  • Yarn与运行的用户程序完全解耦,意味着Yarn上可以运行各种类型的分布式运算程序,比如MapReduce、Storm、Spark、tez …
  • Spark、Storm等运算框架都可以整合在Yarn上运行,只要他们各自的框架中有符合Yarn规范的资源请求机制即可
  • Yarn称为一个通用的资源调度平台,企业中以前存在的各种运算集群都可以整合在一个物理集群上,提供资源利用率,方便数据共享

资源管理指的是什么?
在这里插入图片描述

  • CPU资源
  • 内存资源

调度平台如何理解?

在线下购买的前提下
例如:用户购买电脑(下图购买羽绒服和小说均类似)

方式一:实体专卖店

在实体专卖店购买电脑,只能买到一种品牌
如果需要其他品牌价位符合自身需求的电脑
那么选择实体专卖店就会造成很大的不方便,只能一家一家的去看

方式二:电脑商城

在电脑商城购买电脑,可以买到多种品牌、价位、以及电脑配件等
相对于方式一在实体专卖店购买,更加方便,也能更好地去比较电脑的配置等

两种方式中取电脑商城购买电脑明显是更加符合自身需求的,那么就可以把电脑商城理解为一种平台

电脑商城中有两个资源
	1) 电脑厂商把产品、配件等提供给商城,让其销售
	2) 用户认可电脑商城

有了这么两个资源,就可以把电脑商城做起来。我们就可以理解电脑商城是一种平台

1.有用户
2.有供货商
商城作为中间的平台就可以提供产品来满足用户的需求

在这里插入图片描述

YARN的特点

  • 支持多个数据计算框架
  • 运行成本低
  • 数据共享

YARN的意义

如何理解Yarn的意义,通过以下示例演示
还是之前的示例(换成在网上购买)
商家将用户所需的产品统统放到一个容纳多种商品的大型平台上,用户再从一个平台上购买所需的电脑,羽绒服,图书等商品。相对于之前线下,去不同的商城购买所需的不同商品更加便捷,高效。
在这里插入图片描述
在企业应用上如何理解(以前集群的现状)
在这里插入图片描述

绿色:离线业务
红色:实时业务
黄色:准实时业务

离线业务系统

对于时效性不高的叫做离线数据,
业务需求需要离线数据,那么就构建一个离线业务集群来满足业务需求,
离线业务集群只负责处理离线业务需求

实时业务系统

对于时效性高的叫做实时数据,
业务需求需要该数据立刻马上得出结果,每一秒都要有数据生成,
那么就构建一个实时业务集群来满足业务需求,
实时业务集群只负责处理实时业务需求

准实时业务系统

介于离线和实时之间的叫做准实时,
业务需求需要就构建一个准实时业务集群来满足业务需求,
准实时业务集群只负责准实时业务需求

三个集群

例如三个集群每个都需要用50台服务器,那就意味着三个集群要有三批硬件设备,
在以前的集群现状来看,各个集群只能做各自所能做的需求,无法融合

三份数据

例如这一批数据(三份)提交到三个不同的集群,
在以前的集群现状来看,这批数据只能重复提交到不同集群,每一个集群都需要全量数据
这样就会导致原本的一批数据存储到了三个集群里面,
而三个集群里面,每个集群假如它的数据副本都是3份,
一个集群3份,那么在这个业务系统下有三个集群,其数据副本就占用了原有数据的9倍,
和集群比较多了6份数据副本
和原始数据比较多了9份数据副本
三个集群来支撑业务系统,在最初大数据的平台上,这样满足不同需求,占用了大量的资源

在生活方面:

	之前的示例(线下的情况)
		电脑商城只能卖电脑
		服装城只能卖服装
		图书馆只能卖图书
		电脑商城,服装城,图书馆只能算是相对的一个小的平台
	之前的示例(线上的情况)
		将电脑商城,服装城,图书馆等多个小平台的商品集中放到一个互联网电商平台上面销售,
		则大大减少了资源的浪费 

在技术方面(当前技术现状):
将多个集群业务整合起来就降低了运行成本资源等开销
在这里插入图片描述
将原有的三个集群放在所需要完成的不同业务需求,同时使用Yarn资源调度技术进行整合,原始数据也只需要使用一份,大大降低了企业资源的浪费,降低了企业硬件的开销(原先每个集群都独立需要多态服务器来满足不同业务需求)。

示例:
用户将写完的代码提交到集群,需要先找到Yarn,Yarn接收用户的代码,根据用户的需求,把相应的代码提交到不同的计算框架中
在这里插入图片描述

小结

  • 降低企业的硬件开销(硬件成本)
  • 降低资源(CPU,内存)浪费
  • 降低运行成本
  • 数据共享

YARN的基本架构

在这里插入图片描述
Yarn是一个资源管理、任务调度的框架,主要包含三大模块:

ResourceManager(RM)

集群资源的管理者,负责所有资源的监控、分配和管理,一个集群只有一个

NodeManager(NM)

一个节点资源的管理者,负责每一个节点的维护,一个集群有多个

ApplicationMaster(AppM)

一个计算任务的管理者,负责每一个具体应用程序的调度和协调,一个集群有多个

对于所有的Applications,RM拥有绝对的控制权和对资源的分配权。而每个AppM则会和RM协商资源,同时NodeManager通信来执行和监控Task。

YARN组件介绍

在这里插入图片描述
1.ResourceManager:集群资源的管理者

  • ResourceManager(RM) 负责整个集群的资源管理和分配,是一个全局的资源管理系统
  • NodeManager(NM) 以心跳的方式向ResourceManager汇报资源使用情况(目前主要是CPU和内存的使用情况)。RM只接受NM的资源汇报信息,对于具体的资源处理则交给NM自己处理。
  • YARN Scheduler 根据 Application 的请求为其分配资源,不负责 Application job 的监控、追踪、运行状态反馈、启动等工作

2.NodeManager:每一个节点的资源管理者

  • NodeManager 是每个节点上的资源和任务管理器,它是管理这台机器的代码,负责该节点程序的运行,以及该节点资源的管理和监控。YARN 集群每个节点都运行一个NodeManager
  • NodeManager 定时项 ResourceManager 汇报本节点资源(CPU、内存)的使用情况和 Container 的运行状态。当 ResourceManager 宕机时 NodeManager 自动连接RM备用节点
  • NodeManager 接收并处理来自 ApplicationMaster 的 Container 启动、停止等各种请求。

3.ApplicationMaster:一个计算任务的管理者

  • 用户提交的每个应用程序均包含一个ApplicationMaster,它可以运行在ResourceManager 以外的机器上
  • 负责与RM 调度协商以获取资源(用 Container表示)
  • 将得到的任务进一步分配给内部的任务(资源的二次分配)
  • 与NM 通信以启动/停止任务
  • 监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务
  • 当前YARN自带了两个ApplicationMaster 实现,一个是用于演示AM编写方法的实例程序 DistributedShell,它可以申请一定数目的 Container 以并行运行一个 Shell命令 或者 Shell脚本;另一个是运行MapReduce应用程序的AM—MRAppMaster。
  • 注:RM只负责监控AM,并在AM运行失败时启动它。RM不负责AM内部任务的容错,任务的容错由AM完成。

4.Container:容器,包含内存与CPU

  • Yarn中的资源抽象,封装某个节点上多维度资源,如内存、CPU、磁盘、网络等,当AM(ApplicationMaster)向RM申请资源时,RM向AM返回的资源便是用Container表示的
  • Yarn会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源

功能如下:

  • 对任务运行环境的抽象
  • 描述一系列信息
  • 任务运行资源(节点、内存、CPU)
  • 任务启动命令
  • 任务运行环境

ResourceManager的组成

在这里插入图片描述
基本概念(作用)
在这里插入图片描述

发布了74 篇原创文章 · 获赞 15 · 访问量 4349

猜你喜欢

转载自blog.csdn.net/wzc8961661/article/details/104753755
今日推荐