Hadoop学习笔记(四)之YARN

简介: Hadoop学习笔记(四)之YARN

1.YARN

1.1 背景

YARN 的出现是为了解决在 Hadoop1.x 版本中存在的一些问题。

之前,MapReduceMaster/Slave 结构,也就是集群中一个 Job Tracker 多个 Task TrackerJob Tracker 负责资源管理和作业调度,Task Tracker 负责定期向 Job Tracker 报告节点的状态(节点死活,资源使用情况、任务执行情况)以及接收 Job Tracker 的命令来执行。不知你是否发现,问题就出现在这一个 Job Tracker 上,它挂掉,整个集群都完蛋。而且它由于负责了所有节点的RPC 请求,压力可想而知,也因此成为了节点规模扩大的瓶颈。最后一点便是集群仅支持 MapReduce,不支持其他计算框架。如果想使用 Spark 呢?对不起,再搭建一个集群,想使用 HBase 只能再搭建一个集群。这样的一堆集群既不好管理,又使得资源利用率极低(一段时间内这个集群忙,那个集群闲),同时跨集群的数据转移更是问题。于是乎,YARN 诞生了。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

1.2 简介

1) YARN 全称是 Yet Another Resource Negotiator 「另一种资源协调者」。

2) 它是一个通用的资源管理系统。

3) 它的引入提高了集群的利用率,便于资源统一管理调度,在数据共享方面也带来了极大好处。

4) 它是 Job Tracker 的替代者。

1.3 架构

1) YARN 由四部分组成:ClientResourceManager(RM)、NodeManager(NM)、ApplicationMaster(AM)。

2) 采用了 Master/Slave 结构。一个 ResourceManager 对应多个 NodeManagerClientResourceManager 提交任务或终止任务。ApplicationMaster(AM) 由对应的应用程序完成,每个应用程序对应一个 ApplicationMaster(AM) ,ApplicationMaster(AM) 向 ResourceManager 申请资源用于在 NodeManager 上启动相应的任务。NodeManager(NM) 通过心跳信息向 ResourceManager 汇报自身状态信息。MapTask 对应的是 MapReduce 作业启动时产生的任务,MPITaskMPI 框架对应的执行任务。

MPI 是消息传递接口,可以理解为更原生的一种分布式模型

1.4 核心组件功能

1) ResourceManager :整个集群只有一个。负责集群资源的统一管理和调度;启动或监控 ApplicationMaster (一旦某个 AM 出现故障,RM 将会在另一个节点上启动该 AM);监控 NodeManager ,接收其心跳信息并为其分配任务(一旦某个 NM 出故障,标记一下该 NM 上的任务,来告诉对应的 AM 如何处理)。

2) NodeManager:整个集群中有多个,负责单节点资源管理和使用。定时向 ResourceManager 汇报节点状态信息;接收并处理来自 ResourceManagerContainer 启动或停止的各种命令;处理来自 ApplicationMaster 的命令。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

3) ApplicationMaster :每个应用一个,负责应用程序的管理。数据切分;为应用程序或作业向 ResourceManager 申请资源(Container),并分配给内部任务;与 NodeManager 通信以启动或者停止任务;任务监控和容错(在任务执行失败时重新为该任务申请资源以重启任务);处理 ResourceManager 发过来的命令:终止 Container、让 NodeManager 重启等。

4) Container:对任务运行环境的抽象。任务运行资源(节点、内存、CPU);任务启动命令;任务运行环境;任务是运行在 Container 中,一个 Container 中既可以运行 ApplicationMaster,也可以运行具体的 MapReduceMPISpark Task

1.5 工作原理

1) 用户向 YARN 中提交应用程序/作业,其中包括 ApplicationMaster 程序、启动 ApplicationMaster 的命令、用户程序等。

2) Resource Manager 为作业分配第一个 Container,并与对应的 NodeManager 通信,要求它在这个 Container 中启动该作业的 ApplicationMaster

3) Application Master 首先向 Resource Manager 注册,这样用户可以直接通过 Resource Manager 查询作业的运行状态;然后将为各个任务申请资源并监控任务的运行状态,直到运行结束。即重复步骤(7)。

4) Application Master 采用轮询的方式通过 RPC 请求向 ResourceManager 申请和获取资源。

5) 一旦 ApplicationMaster 申请到资源,便与对应的 NodeManager 通信,要求它启动任务。

6) NodeManager 启动任务。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

7) 各个任务通过 RPC 协议向 ApplicationMaster 汇报自己的状态和进度,以便 ApplicaitonMaster 随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务;在作业运行过程中,用户可随时通过 RPCApplicationMaster 查询作业当前运行状态。

8) 作业完成后,ApplicationMasterResourceManager 注销并关闭自己。

1.6 特点

1) ResourceManager 基于 ZooKeeper 实现高可用机制,避免发生单点故障。

2) Node Manager 执行失败后,ResourceManager 将失败任务告诉对应的 ApplicationMaster,由 ApplicationMaster 决定如何处理失败的任务。

3) Application Master 执行失败后,由 ResourceManager 负责重启 ApplicationMaster 需处理内部任务的容错问题,并保存已经运行完成的 Task,重启后无需重新运行。

相关文章
|
2月前
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
77 5
|
2月前
|
资源调度 数据可视化 大数据
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
36 4
|
2月前
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
162 5
|
2月前
|
XML 资源调度 网络协议
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
112 4
|
2月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
82 4
|
3月前
|
资源调度 分布式计算 Hadoop
YARN(Hadoop操作系统)的架构
本文详细解释了YARN(Hadoop操作系统)的架构,包括其主要组件如ResourceManager、NodeManager和ApplicationMaster的作用以及它们如何协同工作来管理Hadoop集群中的资源和调度作业。
144 3
YARN(Hadoop操作系统)的架构
|
3月前
|
资源调度 分布式计算 Hadoop
使用YARN命令管理Hadoop作业
本文介绍了如何使用YARN命令来管理Hadoop作业,包括查看作业列表、检查作业状态、杀死作业、获取作业日志以及检查节点和队列状态等操作。
57 1
使用YARN命令管理Hadoop作业
|
3月前
|
分布式计算 资源调度 Hadoop
Hadoop YARN资源管理-容量调度器(Yahoo!的Capacity Scheduler)
详细讲解了Hadoop YARN资源管理中的容量调度器(Yahoo!的Capacity Scheduler),包括队列和子队列的概念、Apache Hadoop的容量调度器默认队列、队列的命名规则、分层队列、容量保证、队列弹性、容量调度器的元素、集群如何分配资源、限制用户容量、限制应用程序数量、抢占申请、启用容量调度器以及队列状态管理等方面的内容。
84 3
|
3月前
|
分布式计算 资源调度 Hadoop
Hadoop YARN资源管理-公平调度器(Fackbook的Fair Scheduler)
详细介绍了Hadoop YARN资源管理中的公平调度器(Fair Scheduler),包括其概述、配置、队列结构、以及如何将作业提交到指定队列,展示了公平调度器如何通过分配文件(fair-scheduler.xml)来控制资源分配,并提供了配置示例和如何通过命令行提交作业到特定队列的方法。
160 0
Hadoop YARN资源管理-公平调度器(Fackbook的Fair Scheduler)
|
4月前
|
图形学 数据可视化 开发者
超实用Unity Shader Graph教程:从零开始打造令人惊叹的游戏视觉特效,让你的作品瞬间高大上,附带示例代码与详细步骤解析!
【8月更文挑战第31天】Unity Shader Graph 是 Unity 引擎中的强大工具,通过可视化编程帮助开发者轻松创建复杂且炫酷的视觉效果。本文将指导你使用 Shader Graph 实现三种效果:彩虹色渐变着色器、动态光效和水波纹效果。首先确保安装最新版 Unity 并启用 Shader Graph。创建新材质和着色器图谱后,利用节点库中的预定义节点,在编辑区连接节点定义着色器行为。
265 0

相关实验场景

更多