【Hadoop Yarn】Yarn 工作机制

简介: 【4月更文挑战第7天】【Hadoop Yarn】Yarn 工作机制

image.png

了解YARN(Yet Another Resource Negotiator)的工作机制对于理解大数据处理系统的基本原理至关重要。YARN作为Apache Hadoop生态系统的核心组件之一,负责集群资源的管理和作业调度。其设计目标是为了解决早期Hadoop版本中MapReduce作业独占集群资源的问题,使得Hadoop集群能够更好地支持多种计算框架和作业类型。在本文中,我们将深入探讨YARN的工作机制,包括资源管理、作业调度、节点通信等方面的细节。

1. YARN的工作原理概述

YARN的工作原理可以概括为资源管理和作业调度两个主要方面。它将整个集群的资源划分为多个容器,并通过ResourceManager和NodeManager协同工作来管理这些容器。下面我们将详细介绍YARN的工作流程:

1.1 ResourceManager(资源管理器)

ResourceManager是YARN的主要组件之一,负责整个集群的资源管理和作业调度。它有两个主要的子组件:调度器(Scheduler)和应用程序管理器(ApplicationsManager)。

  • 调度器:负责将集群中的资源分配给不同的应用程序。调度器有不同的实现,可以根据需求选择不同的调度算法,如容量调度、公平调度等。调度器通过与NodeManager通信来确定可用资源,并根据调度策略将这些资源分配给不同的应用程序。

  • 应用程序管理器:负责管理集群中运行的应用程序。它接收客户端提交的应用程序,并为每个应用程序分配一个唯一的应用程序ID,并为其启动一个对应的ApplicationMaster。

1.2 NodeManager(节点管理器)

NodeManager运行在每个集群节点上,负责监控节点资源的使用情况,并与ResourceManager通信以报告节点的可用资源。它负责启动、监控和管理容器,以确保应用程序能够顺利运行。

1.3 ApplicationMaster(应用程序主管)

每个应用程序在集群中启动时,都会有一个对应的ApplicationMaster被分配。ApplicationMaster负责与ResourceManager协商资源,并与NodeManager协调容器的启动、监控和状态报告。它负责管理应用程序的生命周期,包括资源请求、任务调度、错误处理等。

1.4 容器(Container)

容器是YARN中的资源抽象,用来封装运行应用程序所需的资源,如内存、CPU等。每个应用程序在集群中运行时,都会被分配一个或多个容器,用来执行其任务。

2. YARN的工作流程详解

下面我们将详细介绍YARN的工作流程,包括资源管理和作业调度两个方面:

2.1 资源管理流程

  1. 资源申请:应用程序向ResourceManager提交资源请求,包括所需的内存、CPU等资源以及作业的优先级等信息。

  2. 资源分配:ResourceManager根据调度器的调度策略和集群资源的情况,将可用资源分配给不同的应用程序。调度器根据应用程序的优先级和资源需求,决定将资源分配给哪些应用程序。

  3. 容器启动:一旦资源被分配给应用程序,ResourceManager将通知对应的ApplicationMaster,并为其启动相应数量的容器。每个容器都包含了所需的资源和执行环境,可以独立运行应用程序的任务。

  4. 容器监控:NodeManager负责监控容器的运行状态,并定期向ResourceManager报告容器的状态信息。如果容器出现故障或资源不足,NodeManager会立即通知ResourceManager并请求重新分配资源。

  5. 资源释放:当应用程序运行结束或者被取消时,ResourceManager会释放已分配的资源,并将这些资源重新分配给其他应用程序。

2.2 作业调度流程

  1. 应用程序提交:客户端向ResourceManager提交应用程序,包括应用程序的启动命令、所需资源和作业的输入数据等信息。

  2. 应用程序启动:ResourceManager为每个应用程序分配一个唯一的应用程序ID,并为其启动一个对应的ApplicationMaster。ApplicationMaster负责协商资源、启动任务并监控任务的执行状态。

  3. 任务调度:ApplicationMaster向ResourceManager请求资源,并根据作业的拓扑结构和依赖关系,将作业划分为多个任务,并将这些任务分配给不同的容器执行。

  4. 任务执行:每个容器负责执行一个或多个任务,根据作业的逻辑执行相应的计算逻辑,并将计算结果写入HDFS或其他存储系统。

  5. 任务监控:ApplicationMaster负责监控任务的执行状态,并定期向客户端报告作业的进度和状态信息。如果作业执行失败或者超时,ApplicationMaster会进行错误处理并尝试重新执行作业的失败任务。

  6. 作业完成:当所有任务执行完成时,ApplicationMaster向ResourceManager报告作业的完成状态,并释放已分配的资源。客户端可以通过查询作业历史日志或监控作业的进度来获取作业的执行结果。

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

相关实验场景

更多