hadoop03_Yarn

news/2024/10/5 18:25:46/文章来源:https://www.cnblogs.com/istitches/p/18274275

Yarn

img

Hadoop 1.x 中包括 HDFS、MapReduce,其中 MapReduce 既是计算框架又是资源管理框架,它的架构为主从架构。

JobTracker 作为主节点,接受客户端提交的作业 Job,然后为该 Job 在 TaskTracker 上分配资源,之后将 Job 拆分为 Task 调度到不同 TaskTracker 中运行,后者会不断汇报任务执行进度和状态。

这样导致 Job Tracker 主节点压力过大,而且早期没有实现高可用 JobTracker 存在单点问题。其次资源模型划分较为简单,JobTracker 在分配资源时仅仅考虑 Task 数量,没有考虑 CPU 和内存。

img

Yarn 的引入,它是一个分布式通用资源管理系统,摒弃了 JobTracker 的任务调度管理,专注于资源管理。

Yarn 架构

img

Yarn 整体上包含 Resource Manager(Active/StandBy)NodeManagerApplicationManger

  • ResourceManger:主节点,作为资源管理的核心,包括主备两个节点实现高可用。客户端向 ResourceManager 提交作业后,ResourceManager 会在 NodeManager 上为当前作业分配资源;
  • NodeManager:封装了进程相关资源,负责运行具体任务。
    • 作业提交后,ResourceManager 会找到一个空闲 NodeManager 并分配一个 Container 资源容器(可以理解为 Docker 容器,已经分配了 CPU/内存 等资源);
    • 然后该任务会在当前容器内生成 ApplicationMaster(作业管理程序),由该程序调用代码生成具体 Task 任务;
    • 接着 ApplicationMaster 根据生成的 Task 数量,向 ResourceManager 申请资源;
    • ResourceManager 再分配容器资源给作业管理程序,作业管理程序将任务调度到容器进程中执行。执行过程中会实时向作业管理程序汇报任务的运行状态。
  • Container:任务运行的基本单位,理解为 docker 的容器进程;
  • ApplicationMaster:作业管理程序,负责生成具体任务、向 ResouceManager 申请计算资源、收集 Container 中作业运行状态和进度。

上述结构减轻了主节点 ResourceManager 的负载,它只需要专注于资源分配,作业的生成、运行、监控都由 ApplicationMaster 负责。

Yarn 资源调度策略

FIFO 调度器

FIFO Scheduler,先进先出调度策略。将所有的任务放到队列中,队尾入队,队头出队。

无法处理紧急任务,所有任务只能按到达顺序执行。

容量调度器

提前做预算,在预算的指导下分配共享资源,Yarn 默认的调度策略。

img

如图划分出多个队列,用于提交不同任务,并对这些任务提前分配资源。比如两个队列 A 和 B,队列A 用来提交大任务,由于大任务消耗资源多,所以分配多一些资源;而小任务提交到队列B,这样既保证了总体任务执行效率,又保证了小任务/紧急任务能及时得到执行。

同时考虑到大队列可能存在空闲期,所以可以动态调整队列容量,尽最大比例使用资源。

公平调度器

img

同样为多队列划分,但是不会为每个队列预先分配资源,比如 任务A 先提交此时占用所有计算资源,假如又提交了 B任务,就要开始抢占计算资源,任务A 需要划分出一半资源给任务B。

实际使用时可以不用平分计算资源,而是按照加入任务的复杂程度按权重分配资源。

Yarn 基本使用命令

# 查看 Yarn 中所有未完成的任务
yarn application -list# 查看某个任务的执行状态
yarn applicatin -status <Application ID># 强制结束某个任务
yarn application -kill <Application ID>

Yarn 对应的基本配置文件包括 yarn-site.xml,其中核心配置包括:

ResourceManager 相关配置:

# 是否开启 ACL
yarn.acl.enable# ResourceManager 配置
## 设置 RM 主机名
yarn.resourcemanager.hostname## 设置 RM IP+Port,开放给客户端提交任务
yarn.resourcemanager.address## Application 获取资源的 IP+Port
yarn.resourcemanager.scheduler.address## 设置 RM IP+Port,用于 NodeManager 寻址
yarn.resourcemanager.resource-tracker.address## 设置 RM IP+Port,用于管理员命令
yarn.resourcemanager.admin.address## 设置 RM IP+Port,用于Web UI
yarn.resourcemanager.webapp.address## Yarn 全局资源调度策略
yarn.resourceManager.scheduler.class## Container 中最小申请的资源
yarn.scheduler.minimum-allocation-mb## Container 中最大申请的资源
yarn.scheduler.maximum-allocation-mb## 控制 NameNode 列表
yarn.resourcemanager.nodes.include-path
yarn.resourcemanager.nodes.exclude-path

NodeManager 相关配置:

# NodeManager 数据保存位置
yarn.nodemanager.local-dirs# NodeManager 日志保存位置
yarn.nodemanager.log-dirs# 配置 NodeManager 节点内存资源,用于分配给 Container 计算任务使用
yarn.nodemanager.resource.memory-mb# 任务的虚拟内存使用量
yarn.nodemanager.vmem-pmem-ratio# 日志保存时间
yarn.nodemanager.log.retain-seconds

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

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

相关文章

基于django+websocket+paramiko实现跳板机(堡垒机)

基于django+websocket+paramiko实现跳板机(堡垒机) django routing.py # bastion/routing.pyfrom django.urls import path from .consumers import SSHConsumerwebsocket_urlpatterns = [path(ws/ssh/, SSHConsumer.as_asgi()), ]consumers.py # bastion/routing.pyimport jso…

Delphi cxComboBox 添加多个值并选择后返回相关值

创建表CREATE TABLE [dbo].[Products]([Code] [nvarchar](20) NOT NULL,[Name] [nvarchar](100) NULL,[Price] [decimal](5, 2) NULL,[Quantity] [int] NULL,[Amount] [decimal](5, 2) NULL )创建测试数据INSERT INTO Products (Code, Name, Price, Quantity, Amount) VALUES (…

docker-compose scale

docker-compose scale 配置https://github.com/docker/compose/issues/5586version: 2.2 services:template:image: tutum/hello-worldscale: 2version: "3" services:pg:image: postgres:latestnetworks:default:aliases:- rdb.test.mepgadmin:image: dpage/pgadmin…

Tiny-NewsRec论文阅读笔记

Tiny-NewsRec: Effective and Efficient PLM-based News Recommendation论文阅读笔记 Abstract 存在的问题: ​ 现有的大多数工作只是根据新闻推荐任务对 PLM 进行微调,这可能会受到预训练语料库和下游新闻文本之间已知领域偏移问题的影响。此外,PLM 通常包含大量参数,计算…

Ros slam 之行自主导航

经过前面三节的铺垫,我们只需要再编写一个launch文件启动nav2就可以让fishbot自己动起来了。1.编写launch文件我们将地图、配置文件传递给nav2为我们提供好的launch文件中即可。再一个launch文件中包裹另一个功能包中的luanch文件采用的是IncludeLaunchDescription和PythonLau…

pip install jedi 失败

报错内容: ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: C:\\Users\\Administrator\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-package…

米尔瑞芯微创新设计RK3568全LGA国产核心板,更紧凑可靠

今天,米尔电子发布MYC-LR3568核心板及开发板,核心板基于高性能、低功耗的国产芯片-瑞芯微RK3568。核心板采用LGA 创新设计,可实现100%全国产自主可控。MYC-LR3568系列核心板采用高密度高速电路板设计,在大小为43mm*45mm*3.85mm板卡上集成了RK3568J/RK3568B2、LPDDR4、eMMC、…

k8s 概念

Ref https://www.tigera.io/blog/key-kubernetes-concepts/

ConcurrentHashMap底层原理

一、ConcurrentHashMap底层结构二、ConcurrentHashMap类的成员变量public class ConcurrentHashMap<K, V>extends AbstractMap<K, V>implements ConcurrentMap<K, V>, Serializable {// 数组最大容量private static final int MAXIMUM_CAPACITY = 1 <<…

Compute Shader

Compute Shader 是一种高级功能,用于在 GPU 上执行并行计算任务。它非常适合处理大量数据,执行复杂的数学计算,或在高性能图形处理中使用。 常用于,需要密集的并行多线程计算,CPU不擅长并行计算,丢给GPU去算,然后把结果返回给CPU,或者直接渲染到屏幕上。 需要图形API,…

指数增强策略:如何通过动态调整权重击败沪深300?

哈喽,大家好,我是木头左!今天,将深入探讨一种特定的指数增强策略,这种策略以0.8为初始权重跟踪沪深300中权重大于0.35%的成份股,并根据个股的表现动态调整权重。让一起启航,探索这一策略如何帮助在波动的市场中稳健前行。 策略概述:权重与表现的舞蹈 在传统的指数跟踪策…

IP地址的概念及IP子网划分

十进制与二进制的转换192. 168. 10. 111000000 10101000 00001010 00000001幂27 26 25 24 23 22 21 20128 64 32 16 8 4 2 1位1 1 0 0 0 0 0 0=128+64=192 IP地址的划分网络掩码(Network Mask)IP地址类型 1)网络地址:用于标识一个网络,主机位全0的地址。 2)广播地址:用于…