Hadoop 如何保证自己的江湖地位?Yarn 功不可没

news2024/11/19 3:32:16

前言

任何计算任务的运行都离不开计算资源,比如 CPU、内存等,那么如何对于计算资源的管理调度就成为了一个重点。大数据领域中的 Hadoop 之所以一家独大,深受市场的欢迎,和他们设计了一个通用的资源管理调度平台 Yarn 密不可分,那 Yarn 是如何做进行资源管理的呢?它的通用性体现在哪里呢?它是如何保证 Hadoop 绝对的统治地位的呢?希望看了本文你心中有了答案。

YARN 简介

在早期的 Hadoop 1.0 时代是没有 Yarn 这东西的,计算任务 MapReduce 程序分发到大数据集群中是通过 TaskTrackerJobTracker 通信来完成,这有一个很大的缺点就是服务器集群资源调度管理和 MapReduce 执行过程耦合在一起,如果想在当前集群中运行其他计算任务,比如 Spark 或者 Storm,就无法统一使用集群中的资源了。后来聪明的 Hadoop 设计者们想能否将资源管理和计算任务分开,也可以运行别家公司的计算任务呢,这也是 Hadoop 2 最主要的变化,就是将 Yarn 从 MapReduce 中分离出来,成为一个独立的资源调度框架。

Apache Hadoop YARNYet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器。YARN 是一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度。它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

那么如何理解 YARN 是一个通用资源管理系统和调度平台?

  • 资源管理系统:能够管理集群的硬件资源,和程序运行相关,比如内存、CPU 等。

  • 调度平台:多个程序同时申请计算资源如何分配,调度的规则(算法)是什么呢。

  • 通用:不仅仅支持 MapReduce 程序,理论上支持各种计算程序。YARN 不关心你干什么,只关心你要资源,在有的情况下给你,用完之后还我。

可以把 Hadoop YARN 理解为相当于一个分布式的操作系统平台,而 MapReduce 等计算程序则相当于运行于操作系统之上的应用程序,YARN 为这些程序提供运算所需的资源(内存、CPU 等)。 Hadoop 能有今天这个地位,YARN 可以说是功不可没。因为有了 YARN ,更多计算框架可以接入到 HDFS 中,而不单单是 MapReduce,正是因为 YARN 的包容,使得其他计算框架能专注于计算性能的提升。

YARN 架构和执行流程

从图上看,Yarn 包括两个部分:一个是资源管理器(Resource Manager),一个是节点管理器(Node Manager)。

  • ResourceManager(RM)

YARN 集群中的主角色,决定系统中所有应用程序之间资源分配的最终权限,即最终仲裁者。接收用户的作业提交,并通过 NM 分配、管理各个机器上的计算资源。

  • NodeManager(NM)

YARN 中的从角色,一台机器上一个,负责管理本机器上的计算资源。

根据 RM 命令,启动 Container 容器、监视容器的资源使用情况。并且向 RM 主角色汇报资源使用情况。 

Yarn 进行资源分配的单位是容器(Container),每个容器包含了一定量的内存、CPU 等计算资源,默认配置下,每个容器包含一个 CPU 核心。容器由 NodeManager 进程启动和管理,NodeManger 进程会监控本节点上容器的运行状况并向 ResourceManger 进程汇报。

应用程序管理器负责应用程序的提交、监控应用程序运行状态等。应用程序启动后需要在集群中运行一个 ApplicationMasterApplicationMaster 也需要运行在容器里面。每个应用程序启动后都会先启动自己的 ApplicationMaster,由 ApplicationMaster 根据应用程序的资源需求进一步向 ResourceManager 进程申请容器资源,得到容器以后就会分发自己的应用程序代码到容器上启动,进而开始分布式计算。

我们以一个 MapReduce 程序为例,来看一下 Yarn 的整个工作流程。

  1. 我们向 Yarn 提交应用程序,包括 MapReduce ApplicationMaster、我们的 MapReduce 程序,以及 MapReduce Application 启动命令。

2.ResourceManager 进程和 NodeManager 进程通信,根据集群资源,为用户程序分配第一个容器,并将 MapReduce ApplicationMaster 分发到这个容器上面,并在容器里面启动 MapReduce ApplicationMaster

3.MapReduce ApplicationMaster 启动后立即向 ResourceManager 进程注册,并为自己的应用程序申请容器资源。

4.MapReduce ApplicationMaster 申请到需要的容器后,立即和相应的 NodeManager 进程通信,将用户 MapReduce 程序分发到 NodeManager 进程所在服务器,并在容器中运行,运行的就是 Map 或者 Reduce 任务。

5.Map 或者 Reduce 任务在运行期和 MapReduce ApplicationMaster 通信,汇报自己的运行状态,如果运行结束,MapReduce ApplicationMaster ResourceManager 进程注销并释放所有的容器资源。

YARN 资源调度器 Scheduler

YARN 还有一个作用就是进行资源调度,那么如何理解资源调度?

  • 在理想情况下,应用程序提出的请求将立即得到 YARN 批准。但是实际中,资源是有限的,并且在繁忙的群集上,应用程序通常将需要等待其某些请求得到满足。YARN 调度程序的工作是根据一些定义的策略为应用程序分配资源。 

  • 在 YARN 中,负责给应用分配资源的就是Scheduler,它是ResourceManager的核心组件之一。Scheduler完全专用于调度作业,它无法跟踪应用程序的状态。 

  • 一般而言,调度是一个难题,并且没有一个“最佳”策略,为此,YARN 提供了多种调度器和可配置的策略供选择。

三种调度器策略

Yarn 中提供了三种调度器,FIFO Scheduler(先进先出调度器)、Capacity Scheduler(容量调度器)、Fair Scheduler(公平调度器)。Apache 版本 YARN 默认使用Capacity Scheduler

FIFO Scheduler

FIFO Scheduler是一个先进先出的思想,即先提交的应用先运行。调度工作不考虑优先级和范围,适用于负载较低的小规模集群。当使用大型共享集群时,它的效率较低且会导致一些问题。 

FIFO Scheduler拥有一个控制全局的队列 queue,默认 queue 名称为 default,该调度器会获取当前集群上所有的资源信息作用于这个全局的 queue。

优势:

  • 无需配置、先到先得、易于执行

坏处:

  • 任务的优先级不会变高,因此高优先级的作业需要等待

  • 不适合共享集群

Capacity Scheduler

Capacity Scheduler容量调度是 Apache Hadoop3.x 默认调度策略。该策略允许多个组织共享整个集群资源,每个组织可以获得集群的一部分计算能力。通过为每个组织分配专门的队列,然后再为每个队列分配一定的集群资源,这样整个集群就可以通过设置多个队列的方式给多个组织提供服务了。 

Capacity可以理解成一个个的资源队列,这个资源队列是用户自己去分配的。队列内部又可以垂直划分,这样一个组织内部的多个成员就可以共享这个队列资源了,在一个队列内部,资源的调度是采用的是先进先出(FIFO)策略。

优势

  • 层次化的队列设计(Hierarchical Queues)

层次化的管理,可以更容易、更合理分配和限制资源的使用。

  • 容量保证(Capacity Guarantees)

每个队列上都可以设置一个资源的占比,保证每个队列都不会占用整个集群的资源。

  • 安全(Security)

每个队列有严格的访问控制。用户只能向自己的队列里面提交任务,而且不能修改或者访问其他队列的任务。

  • 弹性分配(Elasticity)

空闲的资源可以被分配给任何队列。 当多个队列出现争用的时候,则会按照权重比例进行平衡。

Fair Scheduler

Fair Scheduler 叫做公平调度,提供了 YARN 应用程序公平地共享大型集群中资源的另一种方式。使所有应用在平均情况下随着时间的流逝可以获得相等的资源份额。 

Fair Scheduler 设计目标是为所有的应用分配公平的资源(对公平的定义通过参数来设置)。 

公平调度可以在多个队列间工作,允许资源共享和抢占。

如何理解公平共享?

  • 有两个用户 A 和 B,每个用户都有自己的队列。 

  • A 启动一个作业,由于没有 B 的需求,它分配了集群所有可用的资源。 

  • 然后 B 在 A 的作业仍在运行时启动了一个作业,经过一段时间,A,B 各自作业都使用了一半的资源。

  • 现在,如果 B 用户在其他作业仍在运行时开始第二个作业,它将与 B 的另一个作业共享其资源,因此 B 的每个作业将拥有资源的四分之一,而 A 的继续将拥有一半的资源。结果是资源在用户之间公平地共享。

优势

  • 分层队列:队列可以按层次结构排列以划分资源,并可以配置权重以按特定比例共享集群。

  • 基于用户或组的队列映射:可以根据提交任务的用户名或组来分配队列。如果任务指定了一个队列,则在该队列中提交任务。

  • 资源抢占:根据应用的配置,抢占和分配资源可以是友好的或是强制的。默认不启用资源抢占

  • 保证最小配额:可以设置队列最小资源,允许将保证的最小份额分配给队列,保证用户可以启动任务。当队列不能满足最小资源时,可以从其它队列抢占。当队列资源使用不完时,可以给其它队列使用。这对于确保某些用户、组或生产应用始终获得足够的资源。

  • 允许资源共享:即当一个应用运行时,如果其它队列没有任务执行,则可以使用其它队列,当其它队列有应用需要资源时再将占用的队列释放出来。所有的应用都从资源队列中分配资源。

  • 默认不限制每个队列和用户可以同时运行应用的数量。可以配置来限制队列和用户并行执行的应用数量。限制并行执行应用数量不会导致任务提交失败,超出的应用会在队列中等待。

总结

Yarn 作为一个通用的资源管理平台,简单总结有两大块功能,一个是为计算任务分配 CPU、内存等计算资源,另外一个是计算任务该什么时候调度运行。但是它的格局更大,只要实现 Yarn 提供的编程规范,不仅能运行自己 Hadoop 的 MapReduce 计算任务,还可以运行其他比如 Spark、Flink 等其他产品的计算任务。所以这是一个非常优秀的平台,或者说框架。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/82301.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Metal每日分享,四维向量偏移滤镜效果

本案例的目的是理解如何用Metal实现图像4维向量颜色效果滤镜,通过对像素点颜色进行4维向量叠加运算得到新的像素点; Demo HarbethDemo地址实操代码 // 暖色系 let filter = C7ColorVector4(vector: Vector4.Color.warm)// 方案1: ImageView.image = try? BoxxIO(element: o…

浅谈字节码增强技术系列1-字节码增强概览

作者:董子龙 前言 前段时间一直想参照lombok的实现原理写一篇可以生成业务单据修改记录插件的专利,再查阅资料的过程中,偶然了解到了字节码增强工具-byteBuddy。但是由于当时时间紧促,所以没有深入的对该组件进行了解。其实再我…

一文搞定Pandas核心概念之DataFrame

DataFrame概述 DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索…

麒麟系统下基于卫星的NTP网络授时服务器方案

麒麟系统下基于卫星的NTP网络授时服务器方案 1、 麒麟系统NTP授时方案 设计思路: 在通用的麒麟服务器内部固定一块北斗卫星接收模块并引出卫星天线接口,卫星模块接收北斗卫星数据并解码输出时间数据(NMEA0183串口数据)&#xff…

Linux编译静态库.a脚本(很low)

比如目录下有这几个源文件,我们要把其中带箭头的三个源文件编译打包成静态库文件 然后在当前目录创建脚本make_lib.sh,并赋可执行权限chmod 777 make_lib.sh #!/bin/bash # 在下面将需要编译成静态库的源文件名填进去 list"ky_ai_api ky_ai_pars…

基于PHP的旅游网站的开发与设计

目录 第1章 绪论 3 1.1 课题背景 3 1.2 电子商务的发展趋势 3 1.3企业网站的建立及电子商务的意义 4 第2章 电子商务简介 6 2.1 电子商务的来临 6 2.2 电子商务的概念 6 2.3 电子商务的分类 7 2.4 电子商务的特性 8 2.5 电子商务的结构 11 2.6 电子商务在中国的发展 11 2.7 本章…

Vue生命周期概述

Vue生命周期概述1 概述2 初始阶段3 挂载阶段4 更新阶段5 销毁阶段6 总结1 概述 每个Vue组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂载实例到DOM,以及在数据改变时更新DOM。在此过程中&#xf…

微服务门神-网关了解

引言 书接上篇 微服务守护神-Sentinel-其他 ,讲完微服务守护神-Sentinel之后,接下来就是微服务门神-网关组件:Gateway 问题引入 小伙伴们都知道在微服务架构中,一个系统会被拆分为很多个微服务,每一个微服务都能对外…

风电场数字孪生的应用案例

在我国“十四五”现代能源中明确规划,要大规模发展风电能源。与此同时电力行业也在加紧通过数字孪生等新一代信息技术推动电力能源行业智能化改造和数字化建设,不夸张地说数字孪生技术,数字孪生的应用不仅能够提高风电场项目建设的设计、施工…

PPa-GO/NPs/PEG/DSPE焦脱镁叶绿酸-a修饰氧化石墨烯/纳米粒子/聚乙二醇/磷脂/细胞膜合成

小编分享了PPa-GO/NPs/PEG/DSPE焦脱镁叶绿酸-a修饰氧化石墨烯/纳米粒子/聚乙二醇/磷脂/细胞膜合成方法相关知识,来学习! 焦脱镁叶绿酸-a衍生物合成方法: 通过酸解反应从叶绿素a得到焦脱镁叶绿酸a,羧基保护后插入Zn2形成金属配合物,采用2,3-二氯-5,6-二氰…

window.open跳转页面传参接参

<el-table-column fixed"right" header-align"center" align"center" prop"action" label"操作" width"180px"><template slot-scope"scope"><el-button type"primary" size&…

QT学习笔记(上)

QT学习笔记&#xff08;上&#xff09; 文章目录QT学习笔记&#xff08;上&#xff09;1. 窗口和按钮2. 创建一个自定义的QPushButton2.1 mypushbutton.h2.2 mypushbuttion.cpp2.3 mainwindow.cpp引用mypushbutton3. QT坐标原点4. 信号与槽5. 自定义信号和槽6. 信号和槽的重载P…

基于java(SSH)的数字迎新系统的设计与实现

目 录 摘 要 i Abstract ii 1 绪论 1 1.1 选题背景 1 1.2研究现状 1 1.3课题目的 1 1.4本文结构 2 2 设计技术与开发环境 3 2.1 相关技术介绍 3 2.1.1 Struts简介 3 2.1.2 Hibernate简介 3 2.1.3 spring简介 3 2.2.4 SSH的简介 3 2.2 开发环境介绍 5 2.2.1 Myeclipse简介 5 2.2…

linux只W25Q256驱动,使用m25p80,支持w25q系列nor flash

1.内核编译选项增加 (1&#xff09;Device Drivers/Memory Technology Device (MTD) support ---> (2)Device Drivers/Memory Technology Device (MTD) support /SPI-NOR device support ---> (3)Device Drivers/Memory Technology Device (MTD) support /SPI-NOR dev…

机器学习——期末复习

文章目录填空题第一章 机器学习基础第二章 数据预处理KNN算法支持向量机集成学习决策树聚类算法联结学习三种池化操作选择题计算题数据正规化Hopfield网络能量函数计算卷积、池化操作应用题决策树、朴素贝叶斯、聚类算法单层感知器构造&#xff08;连接神经元部分&#xff09;填…

unix 域套接字实现进程间通信

目录 1、认识域套接字 2、unix域套接字相关API及地址结构介绍 (1) 创建unix域套接字 (2) 填充地址结构 sockaddr_un 3、unix域套接字实现进程间通信&#xff08;以UDP为例&#xff09; 1、认识域套接字 和之前TCP / UDP 编程使用的套接字不同&#xff0c;域套接字常用于同…

01入门及简单应用-ReentrantReadWriteLock原理-AQS-并发编程(Java)

文章目录1 概述2 性质3 简单测试4 模拟数据缓存4.1 应用初始化无缓存4.2 加入缓存改造5 后记1 概述 ReentrantReadWriteLock 是读写锁&#xff0c;和ReentrantLock会有所不同&#xff0c;对于读多写少的场景使用ReentrantReadWriteLock 性能会比ReentrantLock高出不少。在多线程…

技术分享 | 测试平台开发-前端开发之数据展示与分析

测试平台的数据展示与分析&#xff0c;我们主要使用开源工具ECharts来进行数据的展示与分析。 ECharts简介与安装 ECharts是一款基于JavaScript的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表&#xff…

展锐Android 10平台OTA升级

OTA 整体升级包制作步骤&#xff08;以SC9863A平台为例&#xff09; 下载项目 AP 的代码。通过以下命令设置编译环境。 source build/envsetup.sh lunch kheader 通过 make 命令全编整个工程。进入“device/sprd/sharkle/sl8541e_1h10_32b/”目录&#xff08;board 对应目录&a…

5G无线技术基础自学系列 | 站点详细勘测

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 站点的勘测结果非常重要&#xff0c;直…