Spark(18)Yarn-概述

Hadoop三大核心组件:HDFS、MapReduce和YARN

Yarn的概念

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

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

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

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

可以把YARN理解为一个分布式操作系统平台,而MapReduce等计算程序则相当于运行于操作系统之上的应用程序,YARN为这些程序提供运算所需要的资源。

二)yarn架构

yarn是如何完成这些任务的呢?我们来看它的架构图。

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

NodeManager(NM)。YARN中的从角色,一台机器上一个,负责管理本机器上的计算资源。根据RM命令,启动Container容器,监视容器的资源使用情况。并且向RM主角色汇报资源使用情况。

ApplicationMaster(AM)。用户提交的每个应用程序均包含一个AM。应用程序内的“老大”,负责程序内部各阶段的资源申请,监督程序的执行情况。

ResourceManager,NodeManager 是集群物理层面的组件,ApplicationMaster(App Mstr) 是App层面的组件。 以上叫yarn的三大组件。

4台机器,两个客户端

Client: 提交程序的一端。

Container容器:每台机器上都可能会有若干个容器,它是硬件资源的抽象。在一台机器上运行多个程序,如何保证程序之间它们相互不干扰?通过容器。一台机器上有很多的容器,有的容器大,有的容器小。

(三)核心流程

上面的流程图中,有四个核心交互流程

  1. MR作业提交 Client-->RM
  2. 资源的申请 AppMaster-->RM
  3. MR作业状态汇报 Container(Map|Reduce Task)-->Container(AppMaster)
  4. 节点的状态汇报 NM-->RM

四)整体概述

当用户向 YARN 中提交一个应用程序后, YARN将分两个阶段运行该应用程序 。

第一个阶段是客户端申请资源启动运行本次程序的ApplicationMaster

第二个阶段是由ApplicationMaster根据本次程序内部具体情况,为它申请资源,并监控它的整个运行过程,直到运行完成。

五)MR提交YARN详细流程

第1步、用户通过客户端向YARN中ResourceManager提交应用程序(比如hadoop jar提交MR程序);

第2步、ResourceManager为该应用程序分配第一个Container(容器),并与对应的NodeManager通信,要求

它在这个Container中启动这个应用程序的ApplicationMaster。

第3步、ApplicationMaster启动成功之后,首先向ResourceManager注册并保持通信,这样用户可以直接通过ResourceManage查看应用程序的运行状态(处理了百分之几);

第4步、AM为本次程序内部的各个Task任务向RM申请资源,并监控它的运行状态;

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

第6步、NodeManager 为任务设置好运行环境后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务

第7步、各个任务通过某个 RPC 协议向 ApplicationMaster 汇报自己的状态和进度,以让 ApplicationMaster 随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC 向 ApplicationMaster 查询应用程序的当前运行状态。

第8步、应用程序运行完成后,ApplicationMaster 向 ResourceManager 注销并关闭自己。

(六)调度器策略

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

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

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

(七)三种调度器 

提供了三种调度器:

  1. FIFO Scheduler(先进先出调度器)
  2. Capacity Scheduler(容量调度器)
  3. Fair Scheduler(公平调度器)

Apache版本YARN默认使用Capacity Scheduler。如果需要使用其他的调度器,可以在在配置文件中去修改。具体修改的信息是:yarn-site.xml中的yarn.resourcemanager.scheduler.class进行配置。

(1)FIFO Scheduler 先进先出调度器

FIFO Scheduler是Hadoop1.x中JobTracker原有的调度器实现,此调度器在YARN中保留了下来。

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

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

优势: 无需配置、先到先得、易于执行

坏处: 任务的优先级不会变高,因此高优先级的作业需要等待;不适合共享集群

(2)Capacity Scheduler容量调度

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

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

(3)Fair Scheduler公平调度器 

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

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

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

如何理解公平共享 

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

  1. A启动一个作业,由于没有B的需求,它分配了集群所有可用的资源。
  2. 然后B在A的作业仍在运行时启动了一个作业,经过一段时间,A,B各自作业都使用了一半的资源。
  3. 现在,如果B用户在其他作业仍在运行时开始第二个作业,它将与B的另一个作业共享其资源,因此B的每个作业将拥有资源的四分之一,而A继续将拥有一半的资源。结果是资源在用户之间公平地共享

(八)设置队列,并提交任务到不同的队列执行 

理论介绍完了,我们来看一下提交任务到不同队列的操作步骤。

  1. 停止服务。 使用命令:myhadoop stop
  2. 进入hadoop100节点,修改配置文件hadoopcapacity-scheduler.xml(调度器),它所在的位置是:/opt/module/hadoop-3.1.3/etc/hadoopcapacity-scheduler.xml。内容修改如下:设置三个队列:default, production, test分别占用20,60,20的资源。

 

补充的配置如下。

 <property>

    <name>yarn.scheduler.capacity.root.queues</name>

    <value>default,production,test</value>

  </property>

  <property>

    <name>yarn.scheduler.capacity.root.default.capacity</name>

    <value>20</value>

  </property>

  <property>

    <name>yarn.scheduler.capacity.root.production.capacity</name>

    <value>60</value>

  </property>

  <property>

    <name>yarn.scheduler.capacity.root.test.capacity</name>

    <value>20</value>

  </property>

  1. 把配置文件同步给其他机器。 对应的命令是:
    xsync /opt/module/hadoop-3.1.3/etc/hadoop
  2. 重新启动服务。 对应的命令是: myhadoop start
  3. 运行wordcount任务,并手动设置提交的队列名字。

cd /opt/module/hadoop-3.1.3/share/hadoop/mapreduce # 切换目录

hadoop jar hadoop-mapreduce-examples-3.1.3.jar wordcount -Dmapred.job.queue.name=test  /cinput /out2

上面的-Dmapred.job.queue.name=test中,test就是我们指定的运行本任务的队列的名字。

队列可以被看作是任务的等待区域,就像现实生活中人们排队等待服务一样。在 Hadoop 集群中,当有多个 MapReduce 或其他类型的任务同时提交时,这些任务会被放入不同的队列中等待资源分配和执行。每个队列都有自己的属性和规则,用于控制任务的调度和资源分配。

提交任务到指定在队列中

-Dmapred.job.queue.name=yourQueueName 设置要提交的任务运行在哪个队列中。

hadoop jar xxx.jar mrDriver -Dmapred.job.queue.name=yourQueueName inputPath outputPath

hadoop jar hadoop-mapreduce-examples-3.1.3.jar wordcount -Dmapred.job.queue.name=test /wcinput /outp62

6.查看结果

打开浏览器,输入http://hadoop101:8088/cluster

如上的test, default就队列的名称。

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

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

相关文章

Flowith AI,解锁下一代「知识交易市场」

前言 最近几周自媒体号都在疯狂推Manus&#xff0c;看了几篇测评后&#xff0c;突然在某个时间节点&#xff0c;在特工的文章下&#xff0c;发现了很小众的Flowith。 被这段评论给心动到&#xff0c;于是先去注册了下账号。一翻探索过后&#xff0c;发现比我想象中要有趣的多&…

Maxscript调用Newtonsoft.Json解析Json

Maxscript调用Newtonsoft.Json解析Json_newtonsoft.json maxscript-CSDN博客

搭建用友U9Cloud ERP及UAP IDE环境

应用环境 Microsoft Windows 10.0.19045.5487 x64 专业工作站版 22H2Internet Information Services - 10.0.19041.4522Microsoft SQL Server 2019 - 15.0.2130.3 (X64)Microsoft SQL Server Reporing Services 2019 - 15.0.9218.715SQL Server Management Studio -18.6 laster…

github新建一个远程仓库并添加了README.md,本地git仓库无法push

1.本地git仓库与远程仓库绑定 2.push时报错&#xff0c;本地的 main 分支落后于远程仓库的 main 分支&#xff08;即远程有更新&#xff0c;但你本地没有&#xff09;&#xff0c;需要拉取远程的仓库--->在merge合并&#xff08;解决冲突&#xff09;--->push 3.但是git …

我用deepseek做了一个提取压缩文件夹下pdf和word文件工具

由于最近需要把大量的压缩文件的pdf和word文件统一复制到一个文件夹中。 我们一般正常操作方式的是把一个压缩文件一个一个解压&#xff0c;然后在把一个的解压好的文件夹下文件复制到另外一个文件夹中。 这个也需太繁琐了&#xff0c;从以往统计的需要花费两个小时间&#x…

企业网络安全合规风险高、运营不稳定,要怎么解决?

在数字化浪潮中&#xff0c;数据已然成为企业的核心资产&#xff0c;其重要性不言而喻。然而&#xff0c;数据泄露风险也时刻威胁着企业的生存与发展。不少企业在历经数据泄露的惨痛教训后&#xff0c;纷纷选择部署数据防泄露系统。那么&#xff0c;企业部署数据防泄露系统前后…

C#—Lazy<T> 类型(延迟初始化/懒加载模式)

C# 的 Lazy<T> 类型 Lazy<T> 是 C# 中的一个类&#xff0c;用于实现延迟初始化&#xff08;懒加载&#xff09;模式。它提供了一种线程安全的方式来延迟创建大型或资源密集型对象&#xff0c;直到第一次实际需要时才进行初始化。 主要特点 延迟初始化&#xff1a…

C++之unordered封装

目录 一、哈希表的修改 1.1、哈希表节点结构 1.2、迭代器 1.3、哈希表结构 1.4、完整代码 二、unordered_map的实现 二、unordered_set的实现 一、哈希表的修改 注意&#xff1a;这里我们使用哈希桶来封装unordered_map和unordered_set。 1.1、哈希表节点结构 templa…

[渗透测试]渗透测试靶场docker搭建 — —全集

[渗透测试]渗透测试靶场docker搭建 — —全集 对于初学者来说&#xff0c;仅仅了解漏洞原理是不够的&#xff0c;还需要进行实操。对于公网上的服务我们肯定不能轻易验证某些漏洞&#xff0c;否则可能触犯法律。这是就需要用到靶场。 本文主要给大家介绍几种常见漏洞对应的靶场…

Docker如何更换镜像源提高拉取速度

在国内&#xff0c;由于网络政策和限制&#xff0c;直接访问DockerHub速度很慢&#xff0c;尤其是在拉取大型镜像时。为了解决这个问题&#xff0c;常用的方法就是更换镜像源。本文将详细介绍如何更换Docker镜像源&#xff0c;并提供当前可用的镜像源。 换源方法 方法1&#x…

第一篇:从哲学到管理——实践论与矛盾论如何重塑企业思维

引言&#xff1a;当革命哲学照亮现代商业 1937年&#xff0c;毛泽东在战火中写就的《实践论》《矛盾论》&#xff0c;为中国共产党提供了认识世界的方法论。今天&#xff0c;这两部著作正成为企业破解管理困局的“思维操作系统”&#xff1a; 战略模糊&#xff1a;据Gartner统…

云原生--基础篇-2--云计算概述(云计算是云原生的基础,IaaS、PaaS和SaaS服务模型)

1、云计算概念 云计算是一种通过互联网提供计算资源&#xff08;包括服务器、存储、数据库、网络、软件等&#xff09;和服务的技术模式。用户无需拥有和维护物理硬件&#xff0c;而是可以根据需要租用这些资源&#xff0c;并按使用量付费。 2、云计算特点 &#xff08;1&am…

一级滤波器设计:IL_cmdm > 80dB

目录 背景 目的 操作 仿真测试 搭建仿真模型 插入损耗测试 优化设计后重新测试 思考 背景 在选购共模电感时&#xff0c;规格书中通常会提供插损曲线或者阻抗-频率曲线&#xff0c;但这些数据都是在特定条件下测试获得的。如果将其集中在我们的样机中性能会如何&#…

qt 配置 mysql 驱动问题:Cannot load library qsqlmysql;QMYSQL driver not loaded

项目场景&#xff1a; 环境版本&#xff1a; qt &#xff1a;5.14.2 mysql&#xff1a;8.0 windows&#xff1a;10 提示&#xff1a;qt 配置 mysql 驱动&#xff1a; 项目场景&#xff1a;qt 配置 mysql 驱动 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a;…

Kubernetes相关的名词解释Container(16)

什么是Container&#xff1f; 在 Kubernetes 中&#xff0c;Container&#xff08;容器&#xff09; 是一个核心概念&#xff0c;你可以将镜像&#xff08;Image&#xff09;类比为程序的“源代码”&#xff0c;而容器是这段“代码”运行时的进程。例如&#xff0c;一个 nginx…

学习设计模式《四》——单例模式

一、基础概念 单例模式的本质【控制实例数目】&#xff1b; 单例模式的定义&#xff1a;是用来保证这个类在运行期间只会被创建一个类实例&#xff1b;单例模式还提供了一个全局唯一访问这个类实例的访问点&#xff08;即GetInstance方法&#xff09;单例模式只关心类实例的创建…

零基础上手Python数据分析 (19):Matplotlib 高级图表定制 - 精雕细琢,让你的图表脱颖而出!

写在前面 —— 超越默认样式,掌握 Matplotlib 精细控制,打造专业级可视化图表 上一篇博客,我们学习了 Matplotlib 的基础绘图功能,掌握了如何绘制常见的折线图、柱状图、散点图和饼图,并进行了基本的图表元素定制,例如添加标题、标签、图例等。 这些基础技能已经能让我…

信奥中的数学

信奥赛的数学大纲 ps:知识点是其他小伙伴分享的&#xff0c;我现在在做一下系列视频 会逐步更新&#xff0c;希望大家支持喜欢。 1.基础数学 数论 整数和自然数 素数、合数和因数分解 最大公约数(GCD)和最小公倍数(LCM) 同余和取模运算 欧几里得算法 扩展欧几里得算法 中国…

PHP腾讯云人脸核身获取Access Token

参考腾讯云官方文档&#xff1a; 人脸核身 获取 Access Token_腾讯云 public function getAccessToken(){$data [appId > , //WBappid,https://cloud.tencent.com/document/product/1007/49634secret > ,grant_type > client_credential, //授权类型version > 1…

《作用域大冒险:从闭包到内存泄漏的终极探索》

“爱自有天意&#xff0c;天有道自不会让有情人分离” 大家好&#xff0c;关于闭包问题其实实际上是js作用域的问题&#xff0c;那么js有几种作用域呢&#xff1f; 作用域类型关键字/场景作用域范围示例全局作用域var&#xff08;无声明&#xff09;整个程序var x 10;函数作用…