【大数据】了解 YARN 架构的基础知识

news/2024/5/20 2:22:20 标签: 大数据, 架构, yarn, 资源管理, 作业调度, hadoop, hdfs

了解 YARN 架构的基础知识

  • 1.为什么是 YARN
  • 2.YARN 简介
  • 3.YARN 的组成部分
    • 3.1 Resource Manager 资源管理
      • 3.1.1 Scheduler 调度程序
      • 3.1.2 Application Manager 应用程序管理器
    • 3.2 Node Manager 节点管理器
    • 3.3 Application Master 应用程序主控
    • 3.4 Container 容器
  • 4.在 YARN 中提交应用程序
  • 5.Hadoop YARN 中的应用程序工作流程

Hadoop YARN(Yet Another Resource Negotiator)将 Hadoop 的存储单元即 HDFS(Hadoop 分布式文件系统)与各种处理工具编织在一起。

1.为什么是 YARN

在 Hadoop 1.0 版本,也称为 MRV1MapReduce Version 1),MapReduce 执行处理和资源管理功能。它由一个 作业跟踪器Job Tracker)组成,它是唯一的主机。作业跟踪器分配资源、执行调度并监控处理作业。它在许多称为 任务跟踪器Task Trackers)的从属进程上分配映射和归约任务。任务跟踪器定期向作业跟踪器报告其进度。

在这里插入图片描述
由于单个作业跟踪器,这种设计导致了可扩展性瓶颈。 IBM 在其文章中提到,根据 Yahoo 的说法,当集群包含 5000 5000 5000 个节点和同时运行 40000 40000 40000 个任务时,这种设计就达到了实际极限。除了这一限制之外,MRV1 中计算资源的利用效率较低。此外,Hadoop 框架仅限于 MapReduce 处理范例。

为了克服所有这些问题,雅虎和 Hortonworks 于 2012 年在 Hadoop 2.0 版本中引入了 YARN。 YARN 背后的基本思想是通过 接管资源管理作业调度 的职责来减轻 MapReduce 的负担。 YARN 开始赋予 Hadoop 在 Hadoop 框架内运行非 MapReduce 作业的能力

随着 YARN 的推出,Hadoop 生态系统发生了彻底的变革。它变得更加灵活、高效和可扩展。当雅虎在 2013 年第一季度启用 YARN 时,它帮助该公司将 Hadoop 集群的规模从 40000 40000 40000 个节点缩小到 32000 32000 32000 个节点。但就业岗位数量却翻了一番,达到每月 2600 万个。

2.YARN 简介

现在我已经让您了解了 YARN 的必要性,接下来让我向您介绍 Hadoop 2.0 的核心组件 YARN。 YARN 允许图形处理、交互式处理、流处理以及批处理等不同的数据处理方法来运行和处理存储在 HDFS 中的数据。因此,YARN 将 Hadoop 开放给 MapReduce 之外的其他类型的分布式应用程序

在这里插入图片描述
YARN 使用户能够根据需要使用各种工具执行操作,例如用于实时处理的 Spark、用于 SQL 的 Hive、用于 NoSQL 的 HBase 等。

除了 资源管理 之外,YARN 还执行 作业调度。 YARN 通过分配资源和调度任务来执行所有处理活动。 Apache Hadoop YARN 架构由以下主要组件组成:

  • 资源管理Resource Manager):在主守护进程上运行并管理集群中的资源分配。
  • 节点管理器Node Manager):它们在从属守护进程上运行,负责在每个数据节点上执行任务。
  • 应用程序主控Application Master):管理各个应用程序的用户作业生命周期和资源需求。它与节点管理器一起工作并监视任务的执行。
  • 容器Container):单个节点上的 RAM、CPU、网络、HDD 等资源的封装。

3.YARN 的组成部分

您可以将 YARN 视为 Hadoop 生态系统的大脑。下图代表了 YARN 架构
在这里插入图片描述

3.1 Resource Manager 资源管理

  • 它是资源配置的最终权威。
  • 收到处理请求后,它将部分请求相应地传递给相应的节点管理器,在节点管理器中进行实际处理。
  • 它是集群资源的仲裁者,决定竞争应用程序的可用资源分配。
  • 优化集群利用率,例如根据容量保证、公平性和 SLA 等各种限制保持所有资源始终处于使用状态。

它有两个主要组件:

3.1.1 Scheduler 调度程序

  • 调度程序负责将资源分配给受容量、队列等约束的各种正在运行的应用程序。
  • 它在 ResourceManager 中被称为纯调度程序,这意味着它不会对应用程序的状态执行任何监视或跟踪。
  • 如果出现应用程序故障或硬件故障,调度程序不保证重新启动失败的任务。
  • 根据应用程序的资源需求进行调度。
  • 它有一个可插入的策略插件,负责在各个​​应用程序之间划分集群资源。有两个这样的插件:Capacity SchedulerFair Scheduler,目前在 ResourceManager 中用作调度程序。

3.1.2 Application Manager 应用程序管理器

  • 它负责接受作业提交。
  • 协商资源管理器中的第一个容器来执行应用程序特定的应用程序主程序。
  • 管理集群中运行的 Application Master,并提供在失败时重新启动 Application Master 容器的服务。

3.2 Node Manager 节点管理器

  • 它负责 Hadoop 集群中的各个节点,并管理给定节点上的用户作业和工作流程。
  • 它向资源管理器注册并发送包含节点健康状态的心跳。
  • 它的主要目标是管理资源管理器分配给它的应用程序容器。
  • 它与资源管理器保持同步。
  • 应用程序主机通过向节点管理器发送容器启动上下文(CLC)来请求分配的容器,其中包含应用程序运行所需的所有内容。节点管理器创建请求的容器进程并启动它。
  • 监控各个容器的资源使用情况(内存、CPU)。
  • 执行日志管理。
  • 它还按照资源管理器的指示杀死容器。

3.3 Application Master 应用程序主控

  • 应用程序是提交给框架的单个作业。每个应用程序都有一个与之关联的唯一应用程序主控器,它是框架的一个特定实体。
  • 它是协调集群中应用程序的执行并管理故障的进程。
  • 它的任务是从资源管理器协商资源并与节点管理器一起执行和监视组件任务。
  • 它负责与 ResourceManager 协商适当的资源容器,跟踪它们的状态并监控进度。
  • 一旦启动,它会定期向资源管理器发送心跳,以确认其运行状况并更新其资源需求的记录。

3.4 Container 容器

  • 它是单个节点上 RAM、CPU 内核和磁盘等物理资源的集合。
  • YARN 容器由容器启动上下文(即容器生命周期,CLC)管理。该记录包含环境变量的映射、存储在远程可访问存储中的依赖项、安全令牌、节点管理器服务的有效负载以及创建进程所需的命令。
  • 它授予应用程序在特定主机上使用特定数量的资源(内存、CPU 等)的权利。

4.在 YARN 中提交应用程序

在这里插入图片描述

  • 1 提交作业
  • 2 获取应用程序 ID
  • 3 提交应用程序上下文
  • 4.a 启动容器
  • 4.b 启动应用程序主程序
  • 5 分配资源
  • 6.a 容器
  • 6.b 启动
  • 7 执行

5.Hadoop YARN 中的应用程序工作流程

  • 1.客户端(Client)提交申请
  • 2.资源管理器(Resource Manager)分配一个容器来启动应用程序管理器(Application Manager
  • 3.应用程序管理器(Application Manager)向资源管理器(Resource Manager)注册
  • 4.应用程序管理器(Application Manager)向资源管理器(Resource Manager)询问容器
  • 5.应用程序管理器(Application Manager)通知节点管理器(Node Manager)启动容器
  • 6.应用程序代码在容器中执行
  • 7.客户端联系资源管理器(Resource Manager)/ 应用程序管理器(Application Manager),以监控应用程序的状态
  • 8.应用程序管理器(Application Manager)向资源管理器(Resource Manager)取消注册

在这里插入图片描述


http://www.niftyadmin.cn/n/5336261.html

相关文章

银行是地球村最大“车主”

有网友调侃说中国的银行已经成了地球村里最大的“房东”,这话的可信度高。可是,中国的银行还渐渐的在成为地球村里最大的“车主”。此言并非耸人听闻,“80多家4s店被查封 银行连夜拖车 网络炸锅”这新闻可佐证。 截图:来源今日国内…

ASEPRITE使用笔记

aseprite学习笔记 快捷键 新建图层后,按快捷键c可以调出画布属性框放大缩小画布快捷键,鼠标滚轮移动画布快捷键,空格ctr+d,取消选取基本概念 软件五个基本区域:菜单栏、工具属性栏、工具栏、图层栏、颜色栏颜色栏分为色板和调色区域注意事项 创造时,需要把输入法调整成应…

递归算法实现进制转换

1、十进制转换成二进制【递归法】 #include <stdio.h>int decimal_to_binary(unsigned int number) {return number 0 ? 0 : number % 2 10 * decimal_to_binary(number / 2); }void test() {const int sets[][2] {{0, 0}, {1, 1}, {2, 6}, {3, 11}, {5, 60}, {6, 1…

day11_2 CSS3弹性盒子flexbox

弹性盒子 介绍和普通盒子的对比示例 direction属性示例 flex-direction属性示例 justify-content 属性示例 align-items 属性示例 flex-wrap 属性示例 align-content 属性弹性子元素属性——order弹性子元素属性——align-self弹性子元素属性——flex示例&#xff1a; 介绍 弹性…

独立服务器和云服务器的区别

独立服务器和云服务器的区别是很多用户在选择服务器时要做的课程&#xff0c;那么独立服务器和云服务器的区别有哪些呢? 独立服务器和云服务器是两种不同的服务器部署方式&#xff0c;它们在性能、成本、资源利用、安全性和维护等方面存在显著差异。 1. **性能对比**&#xff…

后端传递的图标是字符串形式的 Ant Design 图标组件怎么避免被解析为普通文本

问题描述 后端传递导航&#xff0c;数据格式带了icon。如下 const superNav [{key: 1,icon: <AppstoreOutlined />,title: 控制台,link: /console,},{key: 2,icon: <UserOutlined />,title: 账号管理,children: [{key: sun1,title: 权限管理,link: /account/per…

Webpack5入门到原理14:生产模式介绍

生产模式是开发完成代码后&#xff0c;我们需要得到代码将来部署上线。 这个模式下我们主要对代码进行优化&#xff0c;让其运行性能更好。 优化主要从两个角度出发: 优化代码运行性能 优化代码打包速度 生产模式准备 我们分别准备两个配置文件来放不同的配置 1. 文件目录…

Redis在Windows10中安装和配置

1.首先去下载Redis 这里不给出下载地址&#xff0c;自己可以用去搜索一下地址 下载 下载完成后解压到D盘redis下&#xff0c;本人用的是3.2.100 D:\Redis\Redis-x64-3.2.100 2.解压完成后需要设置环境变量&#xff0c;这里新建一个系统环境变量中path 中添加一个文件所…