当前位置: 首页 > 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…...

AFL++实战:从零开始用WSL搭建模糊测试环境(附libxml2案例)

AFL实战指南&#xff1a;WSL环境下的模糊测试从入门到精通 模糊测试&#xff08;Fuzz Testing&#xff09;作为软件安全测试的重要手段&#xff0c;近年来在漏洞挖掘领域展现出惊人的效果。对于Windows平台开发者而言&#xff0c;Windows Subsystem for Linux&#xff08;WSL&…...

GyroFlow:用陀螺仪数据重塑视频稳定技术

GyroFlow&#xff1a;用陀螺仪数据重塑视频稳定技术 【免费下载链接】gyroflow Video stabilization using gyroscope data 项目地址: https://gitcode.com/GitHub_Trending/gy/gyroflow 在数字影像创作领域&#xff0c;画面稳定性直接决定作品专业度。无论是运动相机拍…...

RTK定位从入门到实践:如何利用千寻服务和Ntrip协议,让你的无人机定位精度达到厘米级?

RTK定位从入门到实践&#xff1a;如何利用千寻服务和Ntrip协议实现厘米级无人机定位 当无人机在农田上方悬停时&#xff0c;1米的定位误差可能导致农药喷洒完全错过目标作物&#xff1b;当测绘无人机进行地形扫描时&#xff0c;几厘米的高度误差可能使整个3D建模数据失效。这就…...

RK3568交叉编译环境搭建:ARM官方GCC 8.3与Linaro版本到底怎么选?我的踩坑与选择心得

RK3568交叉编译环境搭建&#xff1a;ARM官方GCC 8.3与Linaro版本深度对比与实战选择指南 在嵌入式开发领域&#xff0c;交叉编译环境的搭建往往是项目启动的第一道门槛。对于RK3568这样的高性能ARM处理器&#xff0c;选择合适的交叉编译器不仅关系到开发效率&#xff0c;更直接…...

实战应用:基于快马平台ai,开发并部署一个功能齐全的instagram内容下载web应用

今天想和大家分享一个实战项目&#xff1a;基于InsCode(快马)平台快速开发并部署一个功能完备的Instagram内容下载Web应用。这个项目从需求分析到上线只用了不到半天时间&#xff0c;特别适合想验证产品原型的开发者。 项目需求分析 首先明确核心功能需求&#xff1a;需要支持I…...

Typora与AI结合:使用万象熔炉·丹青幻境为Markdown文档自动配图

Typora与AI结合&#xff1a;使用万象熔炉丹青幻境为Markdown文档自动配图 不知道你有没有过这样的体验&#xff1a;在Typora里写完一篇技术博客或项目文档&#xff0c;内容详实&#xff0c;逻辑清晰&#xff0c;但通篇下来全是文字&#xff0c;总觉得少了点什么。想配几张图吧…...

腾讯混元翻译模型HY-MT1.5-1.8B:免费开源,企业级翻译解决方案

腾讯混元翻译模型HY-MT1.5-1.8B&#xff1a;免费开源&#xff0c;企业级翻译解决方案 1. 引言 1.1 为什么选择HY-MT1.5-1.8B 在全球化的商业环境中&#xff0c;语言障碍成为企业拓展国际市场的首要挑战。腾讯混元团队推出的HY-MT1.5-1.8B翻译模型&#xff0c;以其18亿参数的…...

mkcert 命令文档 - 本地 HTTPS 开发证书生成工具详解

1. 命令简介mkcert 是一个用 Go 语言编写的、零配置的本地开发用自签名证书生成工具。它能够自动创建并安装本地证书颁发机构&#xff08;CA&#xff09;到系统的信任存储中&#xff0c;并生成受本地信任的开发证书&#xff0c;大幅简化 HTTPS 本地开发环境的搭建过程&#xff…...

Vue3前端集成Gemma-3-12B-IT:构建智能聊天界面

Vue3前端集成Gemma-3-12B-IT&#xff1a;构建智能聊天界面 用最简单的方式&#xff0c;让你的Vue3项目拥有智能对话能力 1. 为什么要在Vue3中集成智能聊天功能 现在很多网站和应用都需要智能对话功能&#xff0c;不管是客服系统、学习助手还是内容创作工具。Gemma-3-12B-IT作为…...

2026职业红利:AI智能体运营岗位培训如何助你实现高薪跨越?

导读&#xff1a; 2026年&#xff0c;职场竞争的底层逻辑已悄然改变。当传统运营还在为写一段文案、剪一个视频熬夜时&#xff0c;掌握了 AI 智能体技术的“新运营人”已经通过自动化工作流&#xff0c;实现了 10 倍速的产出。目前&#xff0c;市场对AI智能体运营经理、AI内容策…...