当前位置: 首页 > news >正文

复习打卡大数据篇——Hadoop YARN

目录

1.什么是yarn

2.yarn的三大角色

3.任务(MR)提交到YARN运行流程

4. 调度器Scheduler

5.YARN HA 高可用


1.什么是yarn

YARN(Yet Another Resource Negotiator)是一个资源管理和调度平台,旨在为上层应用提供统一的资源管理。它的引入大大提升了集群在利用率、资源管理和数据共享等方面的效率。可以将YARN视为一个分布式操作系统平台,而MapReduce等计算程序则类似于运行在操作系统上的应用,YARN为这些程序提供所需的计算资源。

2.yarn的三大角色

YARN主要有三个角色:ResourceManager(RM)、NodeManager(NM)、ApplicationMaster(AM)。另外还有container和客户端client。

ResourceManager(RM):

RM负责整个集群的资源管理和分配,是一个全局的资源管理系统。NM以心跳的方式向RM汇报资源使用情况(CPU和内存)。RM只接受NM的资源回报信息,对于具体的资源处理则交给NM自己处理。调度器根据application的请求为其分配资源,不负责application job的监控、追踪、运行状态反馈、启动等工作。

NodeManager(NM):

NM是每个节点上的资源和任务管理器,它是管理这台机器的代理,负责该节点程序的运行,以及该节点资源的管理和监控,YARN集群每个节点都运行一个NM。NM定时向RM汇报本节点资源的使用情况和Container(资源的抽象容器)的运行状态。当RM挂了时NM自动连接RM备用节点。NM接收并处理来自AM的Container启动、停止等各种请求。

ApplicationMaster(AM):

用户提交的每个应用程序均包含一个AM,它可以运行在RM以外的机器上。功能包括:负责与RM调度器协商以获取资源(用Container表示)、将得到的任务进一步分配给内部的任务(资源的二次分配)、与NM通信以启动/停止任务、监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。RM只负责监控AM,并在AM运行失败时候启动它。RM不负责AM内部任务的容错,任务的容错由AM完成。

Container:

是YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当 AM 向 RM 申请资源时, RM 为 AM 返回的资源便是用 Container表示的。YARN 会为每个任务分配一个 Container,且该任务只能使用该 Container 中描述的资源。

3.任务(MR)提交到YARN运行流程

  1. 客户端(client)向ResourceManager提交应用程序。
  2. RM指定NM预留资源配合客户端启动一个container用于运行ApplicationMaster。
  3. 启动中的ApplicationMaster向ResourceManager注册自己,启动成功后与RM保持心跳。
  4. ApplicationMaster向ResourceManager发送请求,申请相应数目的container。
  5. ResourceManager返回ApplicationMaster的申请的containers信息。申请成功的container,由ApplicationMaster进行初始化。container的启动信息初始化后,AM与对应的NodeManager通信,要求NM启动container。AM与NM保持心跳,从而对NM上运行的任务进行监控和管理。
  6. container运行期间,ApplicationMaster对container进行监控。container通过RPC协议向对应的AM汇报自己的进度和状态等信息。
  7. 应用运行期间,client直接与AM通信获取应用的状态、进度更新等信息。
  8. 应用运行结束后,ApplicationMaster向ResourceManager注销自己,并允许属于它的container被收回。

4. 调度器Scheduler

所谓的调度器指的是当集群繁忙的时候,如何给申请资源的程序分配资源,scheduler是属于RM的功能。

在Yarn中有三种调度器可以选择:FIFO Scheduler(先进先出策略),Capacity Scheduler(容量调度策略),Fair Scheduler(公平调度策略)。Apache Hadoop版本默认策略是capacity ,CDH商业版本默认策略是Fair。如果需要使用其他的调度器,可以在yarn-site.xml中的yarn.resourcemanager.scheduler.class进行配置。

FIFO Scheduler(先进先出策略):
先进先出就是把应用按提交的顺序排成一个队列,在进行资源分配的时候,先给队列中最头上的应用进行分配资源,待最头上的应用需求满足后再给下一个分配,以此类推。FIFO调度器的实现逻辑非常简单,主要依赖于任务提交的顺序,容易理解和管理,由于任务按顺序执行,每个任务都能获得资源,理论上每个任务都会得到公平的资源分配(假设资源足够)。但长时间运行的任务会阻塞后续任务,导致系统效率降低,在有优先级、高负载等复杂情况时,FIFO可能无法高效管理资源。不适用于共享集群。

Capacity Scheduler(容量调度策略):

Capacity Scheduler的主要目标是确保系统中的资源被分配给不同的用户或任务,以最大化系统的利用率,同时避免资源的过度竞争。它通过设定每个队列的“容量”来控制资源的分配,确保在资源有限的情况下,能够合理地满足不同任务和用户的需求。如果某个队列的任务未能使用完其分配的资源,其他队列可以使用这些空闲资源。若某个队列资源使用不充分,其他队列就能暂时占用这些资源。当资源使用量回升时,调度器可以根据需求重新分配资源。为了保证公平性,调度器可能会使用预设的优先级和容量限制,确保资源不会被单一队列独占。较低优先级的任务可能会在资源紧张时被延迟执行,直到更高优先级的任务完成。

Fair Scheduler(公平调度策略):

Fair调度器会为所有运行的job动态的调整系统资源。当第一个job提交时,只有这一个job在运行,此时它获得了所有集群资源;当第二个job提交后,Fair调度器会分配一半资源给这个小任务,让这两个任务公平的共享集群资源。

5.YARN HA 高可用

为解决RM在YARN中的单点故障,设计了基于Zookeeper集群来实现YARN HA。

由于资源使用情况和NodeManager信息都可以通过NodeManager的心跳机制重新构建出来,因此只需要对ApplicationMaster相关的信息进行持久化存储即可,在一个典型的YARN HA集群中,两台独立的机器被配置成ResourceManger。在任意时间,有且只允许一个活动的ResourceManger,另外一个备用。切换分为两种方式:手动切换和自动切换。自动切换基于zookeeper。

自动故障转移原理:

  1. 创建锁节点:在ZooKeeper上会创建一个叫做ActiveStandbyElectorLock的锁节点,所有的RM在启动的时候,都会去竞争写这个临时的Lock节点,而ZooKeeper能保证只有一个RM创建成功。创建成功的RM就切换为Active状态,没有成功的RM则切换为Standby状态。
  2. 注册Watcher监听:Standby状态的RM向ActiveStandbyElectorLock节点注册一个节点变更的Watcher监听,利用临时节点的特性(会话结束节点自动消失),能够快速感知到Active状态的RM的运行情况。
  3. 准备切换:当Active状态的RM挂了,其在ZooKeeper上创建的Lock节点随之被删除,这时其它各个Standby状态的RM都会受到ZooKeeper服务端的Watcher事件通知,然后开始竞争写Lock子节点,创建成功的变为Active状态,其他的则是Standby状态。
  4. Fencing(隔离):在分布式环境中,机器经常出现假死的情况(常见的是GC耗时过长、网络中断或CPU负载过高)而导致无法正常对外进行及时响应。如果有一个处于Active状态的RM出现假死,其他的RM刚选举出来新的Active状态的RM,这时假死的RM又恢复正常,还认为自己是Active状态,像HDFS HA一样会出现脑裂现象,即存在多个处于Active状态的RM,可以使用隔离机制来解决此类问题。
  5. YARN的Fencing机制是借助ZooKeeper数据节点的ACL权限控制来实现不同RM之间的隔离。创建的根ZNode必须携带ZooKeeper的ACL信息,目的是为了独占该节点,以防止其他RM对该ZNode进行更新。借助这个机制假死之后的RM会试图去更新ZooKeeper的相关信息,但发现没有权限去更新节点数据,就把自己切换为Standby状态。




 

相关文章:

复习打卡大数据篇——Hadoop YARN

目录 1.什么是yarn 2.yarn的三大角色 3.任务(MR)提交到YARN运行流程 4. 调度器Scheduler 5.YARN HA 高可用 1.什么是yarn YARN(Yet Another Resource Negotiator)是一个资源管…...

fpga系列 HDL:ModelSim显示模拟波形以及十进制格式数值

FPGA中使用数字滤波器时,可通过观察模拟波形更好地查看滤波效果。可以通过ModelSim中的波形格式设置来实现更直观的波形显示。 右键波形->Format-> Analog 效果 不同的数值格式显示:右键波形->Radix-> Decimal 效果 示例代码 ver…...

Linux 基本指令

目录 1.常见指令 1.1 ls指令 1.2 pwd指令 1.3 cd指令 1.4 touch指令 1.5 mkdir指令 1.6 rm和rmdir指令 1.7 man指令 1.8 cp指令 1.9 mv指令 ​编辑 1.10 cat指令 1.11 more指令 1.12 less指令 1.13 head指令 1.14.tail指令 1.15 时间相关的指令 1.16 cal…...

GO语言基础面试题

一、字符串和整型怎么相互转换 1、使用 strconv 包中的函数 FormatInt 、ParseInt 等进行转换 2、转换10进制的整形时,可以使用 strconv.Atoi、strconv.Itoa: Atoi是ParseInt(s, 10, 0) 的简写 Itoa是FormatInt(i, 10) 的简写 3、整形转为字符型时&#…...

要查询 `user` 表中 `we_chat_subscribe` 和 `we_chat_union_id` 列不为空的用户数量

文章目录 1、we_chat_subscribe2、we_chat_union_id 1、we_chat_subscribe 要查询 user 表中 we_chat_subscribe 列不为空的用户数量,你可以使用以下 SQL 查询语句: SELECT COUNT(*) FROM user WHERE we_chat_subscribe IS NOT NULL;解释: …...

小程序基础 —— 10 如何调试小程序代码

如何调试小程序代码 在进行项目开发的时候,不可避免需要进行调试,那么如何调试小程序呢? 打开微信开发者工具后,有一个模拟器,通过模拟器能够实时预览自己写的页面,如下: 在上部工具栏中有一个…...

Vue项目如何设置多个静态文件;如何自定义静态文件目录

Vite实现方案 安装插件 npm i vite-plugin-static-copy在vite.config.ts引入 import { viteStaticCopy } from vite-plugin-static-copy配置 plugins: [viteStaticCopy({targets: [{src: "要设置的静态文件目录的相对路径 相对于vite.config.ts的", dest: ./, // …...

CentOS Stream 9 安装 JDK

安装前检查 java --version注:此时说明已安装过JDK,否则为未安装。如若已安装过JDK可以跳过安装步骤直接使用,或者先卸载已安装的JDK版本重新安装。 安装JDK 官网下载地址:https://www.oracle.com/java/technologies/downloads…...

前端(htmlcss)

前端页面 Web页面 PC端程序页面 移动端APP页面 ... HTML页面 HTML超文本标记页面 超文本:文本,声音,图片,视频,表格,链接 标记:由许多标签组成 HTML页面运行到浏览器上面 vscode便捷插件使用 vs…...

py打包工具

pyinstaller 安装 大佬文档参考 pip install pyinstallerpyinstaller 参数 -i 给应用程序添加图标 -F 只生成一个exe格式的文件 -D 创建一个目录,包含exe文件,但会依赖很多文件(默认选项) -c 有黑窗口 -w 去掉黑窗口pyinstalle…...

华为OD E卷(100分)39-最长子字符串的长度(二)

前言 工作了十几年,从普通的研发工程师一路成长为研发经理、研发总监。临近40岁,本想辞职后换一个相对稳定的工作环境一直干到老, 没想到离职后三个多月了还没找到工作,愁肠百结。为了让自己有点事情做,也算提高一下自己的编程能力…...

Selenium+Java(21):Jenkins发送邮件报错Not sent to the following valid addresses解决方案

问题现象 小月妹妹近期在做RobotFrameWork自动化测试,并且使用Jenkins发送测试邮件的时候,发现报错Not sent to the following valid addresses,明明各个配置项看起来都没有问题,但是一到邮件发送环节,就是发送不出去,而且还不提示太多有用的信息,急的妹妹脸都红了,于…...

JSON结构快捷转XML结构API集成指南

JSON结构快捷转XML结构API集成指南 引言 在当今的软件开发世界中,数据交换格式的选择对于系统的互操作性和效率至关重要。JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)是两种广泛使用的数据表…...

【视觉惯性SLAM:四、相机成像模型】

相机成像模型介绍 相机成像模型是计算机视觉和图像处理中的核心内容,它描述了真实三维世界如何通过相机映射到二维图像平面。相机成像模型通常包括针孔相机的基本成像原理、数学模型,以及在实际应用中如何处理相机的各种畸变现象。 一、针孔相机成像原…...

网络编程:TCP和UDP通信基础

TCP 简易服务器&#xff1a; #include<myhead.h>int main(int argc, const char *argv[]) {int oldfd socket(AF_INET,SOCK_STREAM,0);if(oldfd -1){perror("socket");return -1;}//绑定要绑定的结构体struct sockaddr_in server {.sin_family AF_INET,.…...

声波配网原理及使用python简单的示例

将自定义的信息内容&#xff08;如Wi-Fi配置、数字数据&#xff09;转换为音波是一种音频调制与解调技术&#xff0c;广泛应用于声波配网、数据传输和近场通信中。这项技术的实现涉及将数字信息编码为音频信号&#xff0c;并通过解码还原信息。 实现方法 1. 数字数据编码 将原…...

深度学习任务中的 `ulimit` 设置优化指南

深度学习任务中的 ulimit 设置优化指南 1. 什么是 ulimit&#xff1f;2. 深度学习任务中的关键 ulimit 设置2.1 max locked memory&#xff08;-l&#xff09;2.2 open files&#xff08;-n&#xff09;2.3 core file size&#xff08;-c&#xff09;2.4 stack size&#xff08…...

【学生管理系统】权限管理

目录 6.4 权限管理&#xff08;菜单管理&#xff09; 6.4.1 查询所有&#xff08;含孩子&#xff09; 6.4.2 添加权限 6.4.3 核心3&#xff1a;查询登录用户的权限&#xff0c;并绘制菜单 6.4 权限管理&#xff08;菜单管理&#xff09; 6.4.1 查询所有&#xff08;含孩子…...

Java编程题_面向对象和常用API01_B级

Java编程题_面向对象和常用API01_B级 第1题 面向对象、异常、集合、IO 题干: 请编写程序&#xff0c;完成键盘录入学生信息&#xff0c;并计算总分将学生信息与总分一同写入文本文件 需求&#xff1a;键盘录入3个学生信息(姓名,语文成绩,数学成绩) 求出每个学生的总分 ,并…...

JUC并发工具---线程协作

信号量能被FixedThreadPool代替吗 Semaphore信号量 控制需要限制访问量的资源&#xff0c;没有获取到信号量的线程会被阻塞 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore;public class Sem…...

Redis最佳实践——安全与稳定性保障之访问控制详解

Redis 在电商应用的安全与稳定性保障之访问控制全面详解 一、安全访问控制体系架构 1. 多层级防护体系 #mermaid-svg-jpkDj2nKxCq9AXIW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jpkDj2nKxCq9AXIW .error-ico…...

数据结构与算法之单链表面试题(新浪、百度、腾讯)

单链表面试题&#xff08;新浪、百度、腾讯&#xff09; 求单链表中的有效节点的个数 public int getCount(HeroNode head) {Hero1 cur head.getNext();int count 0;while(cur ! null) {count;cur cur.getNext();}return count;}查找单链表中的倒数第k个结点【新浪面试题】…...

Python量化交易12——Tushare全面获取各种经济金融数据

两年前写过Tushare的简单使用&#xff1a; Python量化交易08——利用Tushare获取日K数据_skshare- 现在更新一下吧&#xff0c;这两年用过不少的金融数据库&#xff0c;akshare&#xff0c;baostock&#xff0c;雅虎的&#xff0c;pd自带的......发现还是Tushare最稳定最好用&…...

pytest 常见问题解答 (FAQ)

pytest 常见问题解答 (FAQ) 1. 基础问题 Q1: 如何让 pytest 发现我的测试文件&#xff1f; 测试文件命名需符合 test_*.py 或 *_test.py 模式测试函数/方法需以 test_ 开头测试类需以 Test 开头(且不能有__init__方法) Q2: 如何运行特定测试&#xff1f; pytest path/to/t…...

LangFuse:开源LLM工程平台的革新实践

文章目录 一 架构设计与技术栈二 增强型监控能力三 提示词工程支持&#xff08;新增&#xff09;四 性能优化实践五 LangFuse部署&#xff08;docker&#xff09;和代码集成5.1 LangFuse平台部署5.2 LangFuse代码集成和检测体验 一 架构设计与技术栈 LangFuse采用模块化架构设…...

《高等数学》(同济大学·第7版) 的 详细章节目录

上册 第一章 函数与极限 映射与函数 数列的极限 函数的极限 无穷小与无穷大 极限运算法则 极限存在准则 两个重要极限 无穷小的比较 函数的连续性与间断点 连续函数的运算与初等函数的连续性 闭区间上连续函数的性质 &#x1f539; 重点节&#xff1a; 2-3&#xff…...

Mybatis Plus JSqlParser解析sql语句及JSqlParser安装步骤

MyBatis Plus 整合 JSqlParser 进行 SQL 解析的实现方案&#xff0c;主要包括环境配置和具体应用。通过 Maven 添加mybatis-plus-core 和 jsqlparser 依赖后&#xff0c;可用 CCJSqlParserUtil 解析 SQL 语句&#xff0c;支持对 SELECT、UPDATE 等语句的语法树分析和重构。技术…...

pycharm 新UI 固定菜单栏 pycharm2025 中文版

pycharm 新UI 文件 -> 设置 -> 外观与行为 -> 外观 -> UI选项 -> 主菜单:显示在主工具栏上方. 即可固定...

CMG 机器人格斗大赛举行,宇树人形机器人参赛,比赛有哪些看点?对行业意味着什么?

点击上方关注 “终端研发部” 设为“星标”&#xff0c;和你一起掌握更多数据库知识 其实那个遥控员挺爽的。打拳皇等都是用手柄控制虚拟人物在对打&#xff0c;他们这是控制真的。 格斗最考验的不是攻击力&#xff0c;而是"挨打后能不能快速爬起来"。G1在比赛中展示…...

【.net core】SkiaSharp 如何在Linux上实现

1. 安装依赖库 首先需要安装 SkiaSharp 运行时依赖&#xff1a; # Ubuntu/Debian sudo apt-get update sudo apt-get install -y libfontconfig1 libfreetype6 libx11-6 libx11-xcb1 libxcb1 \libxcomposite1 libxcursor1 libxdamage1 libxi6 libxtst6 \libnss3 libcups2 lib…...