Advertisement

yarn工作机制及其他知识点整理

阅读量:

文章目录

导论

  • 三、Yarn生产环境核心参数

前言

Yarn充当了一个资源调度功能模块,在云计算环境中为各种运算任务提供计算节点支持;它类似于一种基于分布式计算架构的操作系统平台;而像MapReduce这类作业如同运行在操作系统顶层的应用程序


一、Yarn基础架构

在这里插入图片描述

YARN主要包含ResourceManager、NodeManager、ApplicationMaster和Container等组件组成

ResourceManager(RM) 负责接收并处理客户端的请求;同时持续监控NodeManager的状态;启动并持续监控ApplicationMaster的状态;并且负责资源的分配与调度安排。

  1. NodeManager(NM)的主要作用包括:
  • 负责管理单个节点的资源
  • 接收并处理来自NodeManager(NM)的相关命令
  • 响应并处理来自ApplicationMaster的应用层指令
  1. ApplicationMaster(AM)的作用
  • 系统为其获取资源并负责分配给内部的任务。
  • 监控任务运行情况及容错机制。
  1. container容器
  • container是YARN中的一个资源抽象体,在虚拟化环境中它能够承载或包含处于同一虚拟机环境下的多个物理节点上的多层次系统资源管理单元(RMM),例如内存占用情况、CPU使用率等网络性能指标以及磁盘空间利用率等存储设备性能指标

二、Yarn工作机制

在这里插入图片描述

(1) 该MR程序被客户端所在节点提交后,在主线程上启动waitForCompletion任务从而生成一个YarnRunner实例
(2) YarnRunner成功后会返回申请该提交路径及其对应的application_id
(3) YarnRunner向系统申请后会将job运行所需的资源文件发送给相关节点以便后续处理
(4) 在所有资源文件传输至目标位置之前系统会暂时拒绝接收新的请求
(5) 当所有资源文件到达指定位置后系统便会恢复接收新的请求
(6) 系统会在空闲时自动将当前任务加入任务队列等待执行
(7) 当NodeManager节点空闲时它会主动领取新的任务并将新任务容器化以便后续处理
(8) 容器化后会在内部启动mrAppMaster服务并开始读取相关的job信息
(9) 空闲的NodeManager节点在接收到新任务后会根据任务类型生成相应数量的任务容器
(10) mrAppMaster服务在处理完当前Map任务后会立即向系统申请新的Reduce任务资源
(11) Reduce阶段会对Map所获取的数据分区进行汇总处理并最终完成整个数据流程
(12) 当Reduce阶段完成后mrAppMaster将会通知相关节点完成整个MR流程并将自身从系统中移除

容量调度器(Capacity Scheduler)

目前,Hadoop作业调度器主要采用 FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler)。Apache Hadoop 3.1.3 被选中为其资源调度器 Capacity Scheduler。CDH 框架被选中为其默认调度器 Fair Scheduler。请参考 yarn-default.xml 文件获取详细配置信息。

复制代码
    <property>
    <description>The class to use as the resource scheduler.</description>
    <name>yarn.resourcemanager.scheduler.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
    </property>
在这里插入图片描述

特点:

  • 多队列:每个队列都可以配置一定数量的可用资源,并且遵循先来先服务的调度策略
    • 容量保证:管理员可以通过设定最低可用阈值以及最大使用限制的方式为每个队列设定容量保障
    • 灵活性:当某个队列存在剩余资源时,系统会暂时分配给那些需要额外资源的任务;但一旦新任务被提交到该队列中,则系统会将借调来的闲置资源归还给相应的任务
    • 多租户:
      允许多个用户共同使用集群处理多个应用程序同时运行,并且系统会自动分配不同的计算节点以提高整体效率。
      为了确保同一用户的所有作业能够共享相同的资源库而不发生独占,在调度过程中系统会对每条作业所占用的计算节点数量进行动态监控与调整

公平调度器(Fair Scheduler)

在这里插入图片描述

与容量调度器具有以下相似特性:
一是在组织架构上采取多元化的策略支持多个独立的作业队列;
二是通过设定最低可用阈值和最大负载上限实现容量管理;
三是在系统响应性方面具备灵活优势,在某个作业队列存在剩余资源时可暂时释放以供其他需求方使用;当新任务到达时相关资源将自动归还原队列;
四是实现统一的安全隔离机制允许多个用户同时协作运行多个应用程序,并对同一用户的作业任务进行精确流量限制以防止出现独占性使用现象。

In contrast to the capacity scheduler, the fair scheduler exhibits distinct characteristics. While the capacity scheduler selects queues with low resource utilization rates as its primary decision criterion, the fair scheduler prioritizes those with a higher proportion of resource deficiency. Consequently, The differences between the two scheduling mechanisms lie primarily in their core decision criteria.

每个队列均能独立配置其资源分配策略
该容量调度器可配置的资源分配模式包括:FIFO和DRF
该公平调度器支持的资源分配模式有:FIFO、FAIR和DRF

三、Yarn生产环境核心参数

ResourceManager相关

复制代码
    yarn.resourcemanager.scheduler.class              配置调度器,默认容量

    yarn.resourcemanager.scheduler.client.thread-count     ResourceManager处理调度器请求的线程数量,默认50

NodeManager相关

复制代码
    yarn.nodemanager.resource.detect-hardware-capabilities     是否让yarn自己检测硬件进行配置,默认false

    yarn.nodemanager.resource.count-logical-processors-as-cores     是否将虚拟核数当作CPU核数,默认false
    yarn.nodemanager.resource.pcores-vcores-multiplier	        虚拟核数和物理核数乘数,例如:4核8线程,该参数就应设为2,默认1.0
    yarn.nodemanager.resource.memory-mb	            NodeManager使用内存,默认8G
    yarn.nodemanager.resource.system-reserved-memory-mb  NodeManager为系统保留多少内存
    以上二个参数配置一个即可
    yarn.nodemanager.resource.cpu-vcores          NodeManager使用CPU核数,默认8个
    yarn.nodemanager.pmem-check-enabled        是否开启物理内存检查限制container,默认打开
    yarn.nodemanager.vmem-check-enabled        是否开启虚拟内存检查限制container,默认打开
    yarn.nodemanager.vmem-pmem-ratio            虚拟内存物理内存比例,默认2.1

Container相关

复制代码
    yarn.scheduler.minimum-allocation-mb  容器最最小内存,默认1G

    yarn.scheduler.maximum-allocation-mb	容器最最大内存,默认8G
    yarn.scheduler.minimum-allocation-vcores	容器最小CPU核数,默认1个
    yarn.scheduler.maximum-allocation-vcores	容器最大CPU核数,默认4个

全部评论 (0)

还没有任何评论哟~