
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管理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)