带你了解大数据入门(四) - 分布式资源调度——YARN框架

带你了解大数据入门(四) - 分布式资源调度——YARN框架,第1张

YARN是Hadoop2x才有的,所以在介绍YARN之前,我们先看一下MapReduce1x时所存在的问题:

11 MapReduce1x时的架构

可以看到,1x时,即 Master/Slave 主从结构,在集群上的表现就是一个JobTracker带多个TaskTracker

12 该架构存在的问题

由于1x版本不支持其他框架的作业,所以导致我们需要根据不同的框架去搭建多个集群。这样就会导致资源利用率比较低以及运维成本过高,因为多个集群会导致服务环境比较复杂

在上图中我们可以看到,不同的框架不仅需要搭建不同的集群

而且这些集群很多时候并不是总是在工作,如上图可以看到,Hadoop集群在忙的时候Spark就比较闲,Spark集群比较忙的时候Hadoop集群就比较闲,而MPI集群则是整体并不是很忙

这样就无法高效的利用资源,因为这些不同的集群无法互相使用资源

除此之外,我们还得运维这些个不同的集群,而且文件系统是无法共享的

如果当需要将Hadoop集群上的HDFS里存储的数据传输到Spark集群上进行计算时,还会耗费相当大的网络IO流量

所以我们就想着要把这些集群都合并在一起,让这些不同的框架能够运行在同一个集群上,这样就能解决这各种各样的问题了如下

正是因为在1x中,有各种各样的问题,才使得YARN得以诞生,而YARN就可以令这些不同的框架运行在同一个集群上,并为它们调度资源

在上图中,我们可以看到,集群最底层的是HDFS,在其之上的就是YARN层,而在YARN层上则是各种不同的计算框架。所以不同计算框架可以共享同一个HDFS集群上的数据,享受整体的资源调度,进而提高集群资源的利用率,这也就是所谓的 xxx on YARN

21 概述

22 核心组件

221 ResourceManager(RM)

222 NodeManager(NM)

整个集群中会有多个NM,它主要负责自己本身节点的资源管理和使用,以及定时向RM汇报本节点的资源使用情况。接收并处理来自RM的各种命令,例如:启动Container。NM还需要处理来自AM的命令,例如:AM会告诉NM需要启动多少个Container来跑task。

223 ApplicationMaster(AM)

每个应用程序都对应着一个AM。例如:MapReduce会对应一个、Spark会对应一个。它主要负责应用程序的管理,为应用程序向RM申请资源(Core、Memory),将资源分配给内部的task。AM需要与NM通信,以此来启动或停止task。task是运行在Container里面的,所以AM也是运行在Container里面。

224 Container

封装了CPU、Memory等资源的一个容器,相当于是一个任务运行环境的抽象

225 Client

客户端,它可以提交作业、查询作业的运行进度以及结束作业

官网

1client向yarn提交job,首先找ResourceManager分配资源,

2ResourceManager开启一个Container,在Container中运行一个Application manager

3Application manager找一台nodemanager启动Application master,计算任务所需的计算

4Application master向Application manager(Yarn)申请运行任务所需的资源

5Resource scheduler将资源封装发给Application master

6Application master将获取到的资源分配给各个nodemanager

7各个nodemanager得到任务和资源开始执行map task

8map task执行结束后,开始执行reduce task

9map task和 reduce task将执行结果反馈给Application master

10Application master将任务执行的结果反馈pplication manager。

另外找到两篇关于YARN执行流程不错的文章:

41 官方文档指南

验证

到此为止,我们的yarn环境就搭建完成了

51 提交作业

虽然我们没有搭建MapReduce的环境,但是我们可以使用Hadoop自带的一些测试例子来演示一下如何提交作业到YARN上执行。Hadoop把example的包放在了如下路径,可以看到有好几个jar包:

52 命令说明

53 运行以上命令后,到浏览器页面上进行查看,会有以下三个阶段:

531 接收资源

532 运行作业

533 作业完成

YARN的编程模型

1:保证编程模型的向下兼容性,MRv2重用了MRv1的编程模型和数据处理引擎,但运行环境被重写。

2:编程模型与数据处理引擎

mapreduce应用程序编程接口有两套:新的API(mapred)和旧的API(mapreduce)

采用MRv1旧的API编写的程序可直接运行在MRv2上

采用MRv1新的API编写的程序需要使用MRv2编程库重新编译并修改不兼容的参数 和返回值

3:运行时环境

MRv1:Jobracker和Tasktracker

MRv2:YARN和ApplicationMaster

YARN的组成

yarn主要由ResourceManager,NodeManager,ApplicationMaster和Container等几个组件组成。

ResourceManager(RM)

RM是全局资源管理器,负责整个系统的资源管理和分配。

主要由两个组件组成:调度器和应用 程序管理器(ASM)

调度器

调度器根据容量,队列等限制条件,将系统中的资源分配给各个正在运行的应用程序

不负责具体应用程序的相关工作,比如监控或跟踪状态

不负责重新启动失败任务

资源分配单位用“资源容器”resource Container表示

Container是一个动态资源分配单位,它将内存,CPU,磁盘,网络等资源封装在一起,从而限定每个任务的资源量

调度器是一个可插拔的组件,用户可以自行设计

YARN提供了多种直接可用的调度器,比如fair Scheduler和Capacity Scheduler等。

应用程序管理器

负责管理整个系统中所有应用程序

ApplicationMaster(AM)

用户提交的每个应用程序均包含一个AM

AM的主要功能

与RM调度器协商以获取资源(用Container表示)

将得到的任务进一步分配给内部的任务

与NM通信以自动/停止任务

监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务

当前YARN自带了两个AM实现

一个用于演示AM编写方法的实例程序distributedshell

一个用于Mapreduce程序---MRAppMaster

其他的计算框架对应的AM正在开发中,比如spark等。

Nodemanager(NM)和Container

NM是每个节点上的资源和任务管理器

定时向RM汇报本节点上的资源使用情况和各个Container的运行状态

接收并处理来自AM的Container启动/停止等各种要求

Container是YARN中的资源抽象,它封装了某个节点上的多维度资源

YARN会为每个任务分配一个Container,且改任务只能使用该Container中描述的资源

Container不同于MRv1的slot,它是一个动态资源划分单位,是根据应用程序的需求动态产生的

YARN主要由以下几个协议组成

ApplicationClientProtocol

Jobclient通过该RPC协议提交应用才程序,查询应用程序状态等

ResourceManagerAdministrationProtocol

Admin通过该协议更新系统配置文件,比如节点黑名单,用户队列权限等。

ApplicationMasterProtocol

AM通过该RPC协议想RM注册和撤销自己,并为各个任务申请资源

ContainerManagementProtocol

AM通过要求NM启动或者停止Container,获取各个Container的使用状态等信息

ResourceTracker

NM通过该RPC协议向RM注册,并定时发送心跳信息汇报当前节点的资源使用情况和Container运行状况

YARN的工作流程

文字描述一下这个过程:

1:由客户端提交一个应用,由RM的ASM接受应用请求

提交过来的应用程序包括哪些内容:

a:ApplicationMaster

b:启动Applicationmaster的命令

c:本身应用程序的内容

2:提交了三部分内容给RM,然后RM找NodeManager,然后

Nodemanager就启用Applicationmaster,并分配Container

接下来我们就要执行这个任务了,

3:但是执行任务需要资源,所以我们得向RM的ASM申请执行任务的资源(它会在RM这儿注册一下,说我已经启动了,注册了以后就可以通过RM的来管理,我们用户也可以通过RM的web客户端来监控任务的状态)ASM只是负责APplicationMaster的启用

4::我们注册好了后,得申请资源,申请资源是通过第四步,向ResourceScheduler申请的

5:申请并领取资源后,它会找Nodemanager,告诉他我应经申请到了,然后Nodemanager判断一下,

6:知道他申请到了以后就会启动任务,当前启动之前会准备好环境,

7:任务启动以后会跟APplicationmaster进行通信,不断的心跳进行任务的汇报。

8:完成以后会给RM进行汇报,让RSM撤销注册。然后RSM就会回收资源。当然了,我们是分布式的,所以我们不会只跟自己的Nodemanager通信。也会跟其他的节点通信。

AM管理:它利用收到数据报文的信息(源IP 地址或者源IP+源MAC)与配置硬件地址池相比较,如果找到则转发,否则丢弃。

当AM使能的时候,AM模块会拒绝所有的IP报文通过(只允许IP地址池内的成员源地址通过)。我们可以在交换机端口创建一个MAC+IP 地址绑定,放到地址池中。

当端口下联主机发送的IP报文(包含ARP报文)中,所含的源IP+源MAC不符合地址池中的绑定关系,此报文就将被丢弃。

扩展资料:

1、AM管理功能优点

配置简单,除了可以防御ARP攻击,还可以防御IP扫描等攻击。适用于信息点不多、规模不大的静态地址环境下。

2、AM管理功能缺点

需要占用交换机ACL资源,网络管理员配置量大,终端移动性差。

参考资料来源:百度百科-am

以上就是关于带你了解大数据入门(四) - 分布式资源调度——YARN框架全部的内容,包括:带你了解大数据入门(四) - 分布式资源调度——YARN框架、YARN到底是怎么一回事、什么是AM管理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10148158.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存