网站首页 > 博客文章 正文
YARN是什么
前面介绍Hadoop的时候说过,YARN是Hadoop的组成的一个模块,是Hadoop的集群资源管理器系统。它是Yet Another Resource Negotiator的缩写,直译的意思是"另一种资源调度器"。YARN是从Hadoop 2.X引入的,最初是为了改善MapReduce的实现,但是它具有通用性,同样执行其他分布式计算模式
作为Apache Hadoop的核心组件之一,YARN负责将系统资源分配给在Hadoop集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务。
需要注意的是,在YARN中我们把job的概念换成了application,因为在新的Hadoop2.x中,运行的应用不只是MapReduce了,还有可能是其它应用如一个DAG(有向无环图Directed Acyclic Graph,例如storm应用)。YARN的另一个目标就是拓展Hadoop,使得它不仅仅可以支持MapReduce计算,还能很方便的管理诸如Hive、Hbase、Pig、Spark/Shark等应用。这种新的架构设计能够使得各种类型的应用运行在Hadoop上面,并通过YARN从系统层面进行统一的管理,也就是说,有了YARN,各种应用就可以互不干扰的运行在同一个Hadoop系统中,共享整个集群资源,如下图所示:
YARN的架构
Yarn从整体上还是属于master/slave模型,主要依赖于三个组件来实现功能
- ResourceManager(RM): 是集群资源的仲裁者,它包括两部分:一个是可插拔式的调度Scheduler,一个是ApplicationManager,用于管理集群中的用户作业。
- NodeManager: 每个节点上的NodeManager,管理该节点上的用户作业和工作流,也会不断发送自己Container使用情况给ResourceManager。
- ApplicationMaster(AM): 用户作业生命周期的管理者,它的主要功能就是向ResourceManager(全局的)申请计算资源(Containers)并且和NodeManager交互来执行和监控具体的task。架构图如下:
YARN 的基本思想是将资源管理和作业调度/监视的功能分解为单独的daemon(守护进程),其拥有一个全局 ResourceManager(RM) 和每个应用程序的 ApplicationMaster(AM)。应用程序可以是单个作业,也可以是作业的DAG。
ResourceManager和NodeManager构成了数据计算框架。 ResourceManager 是在系统中的所有应用程序之间仲裁资源的最终权限。NodeManager是每台机器框架代理,负责Containers,监视其资源使用情况(CPU,内存,磁盘,网络)并将其报告给ResourceManager。
每个应用程序ApplicationMaster实际上是一个框架特定的库,其任务是协调来自ResourceManager的资源,并与NodeManager 一起执行和监视任务。
Container:
Container是Yarn框架的计算单元,是具体执行应用task(如map task、reduce task)的基本单位。Container和集群节点的关系是:一个节点会运行多个Container,但一个Container不会跨节点。任何一个 job 或 application必须运行在一个或多个Container中,在Yarn 框架中,ResourceManager 只负责告诉 ApplicationMaster哪些Containers可以用,ApplicationMaster 还需要去找NodeManager请求分配具体的Container。
一个Container就是一组分配的系统资源,现阶段只包含两种系统资源(之后可能会增加磁盘、网络等资源。
YARN应用提交过程
Application在YARN中的执行过程,整个执行过程可以总结为三步:
- 应用程序提交
- 启动应用的ApplicationMaster实例
- ApplicationMaster实例管理应用程序的执行
具体提交过程:
1.客户端程序向 ResourceManager 提交应用并请求一个 ApplicationMaster 实例;
2.ResourceManager找到一个可以运行一个Container的NodeManager,并在这个Container中启动ApplicationMaster实例;
3.ApplicationMaster向ResourceManager进行注册,注册之后客户端就可以查询ResourceManager 获得自己ApplicationMaster的详细信息,以后就可以和自己的ApplicationMaster直接交互了(这个时候,客户端主动和 ApplicationMaster 交流,应用先向 ApplicationMaster 发送一个满足自己需求的资源请求);
4.在平常的操作过程中,ApplicationMaster根据 resource-request协议向ResourceManager 发送resource-request请求;
5.当Container被成功分配后,ApplicationMaster通过向NodeManager发送container-launch-specification信息来启动Container,container-launch-specification信息包含了能够让Container和ApplicationMaster交流所需要的资料;
6.应用程序的代码以task形式在启动的Container中运行,并把运行的进度、状态等信息通过application-specific协议发送给ApplicationMaster;
7.在应用程序运行期间,提交应用的客户端主动和 ApplicationMaster 交流获得应用的运行状态、进度更新等信息,交流协议也是application-specific协议;
8.一旦应用程序执行完成并且所有相关工作也已经完成,ApplicationMaster向ResourceManager取消注册然后关闭,用到所有的Container也归还给系统。
猜你喜欢
- 2024-10-14 国庆期间别偷懒,大数据平台只差YARN了
- 2024-10-14 为什么我们从Yarn切换到pnpm(yarn设置淘宝镜像)
- 2024-10-14 flink的yarn模式部署(flink的三种部署方案)
- 2024-10-14 yarn的安装和使用(yarn安装教程)
- 2024-10-14 yarn 的安装和使用(yarn安装教程)
- 2024-10-14 操作学习-Spark on Yarn(spark on yarn执行流程)
- 2024-10-14 全面解析:Hadoop基础——YARN(hadoop yarn工作原理)
- 2024-10-14 Node简史及好书推荐(nodejs相关书籍)
- 2024-10-14 大数据之-Hadoop3.x_Yarn_常用命令---大数据之hadoop3.x_0147
- 2024-10-14 大数据系列文章之Yarn组件及其执行流程
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)