hadoop_yarn详解

YARN秒懂

YARN定义

YARN(Yet Another Resource Negotiator)是Hadoop的一个框架,它负责在Hadoop集群中调度工作,管理资源,并为用户提供运行各种类型的应用程序的环境

基础架构

ResourceManager

  1. 处理客户端请求
  2. 监控NodeManager
  3. 启动或监控ApplicationMater
  4. 资源的分配与调度

NodeManager

  1. 管理单个节点上的资源
  2. 处理来自ResourceManager的命令
  3. 处理来自ApplicationMaster的命令

ApplicationMaster

  1. 为应用程序申请资源并分配给内部的任务
  2. 任务的监控与容错

Container

  1. container是YARN中的资源抽象,封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等

工作流程

  1. 作业提交1-3

  2. 作业初始化4-7

  3. 任务分配8-9

  4. 任务运行10-13

  5. 进度和状态更新

    复制代码
     YARN中的任务将其进度和状态返回给应用管理器, 客户端每秒向应用管理器请求进度更新, 展示给用户
  6. 作业完成

    复制代码
     客户端除了向应用管理器请求作业进度外, 每5分钟会来检查作业是否完成
     作业完成之后, 应用管理器和Container会清理工作状态。作业的信息会被作业历史服务器存储以备之后用户核查

资源调度器

FIFO Scheduler

First In First Out,单队列,根据作业的提交顺序执行任务

Capacity Scheduler

容量调度器,Apache hadoop3.2.3默认调度器,是Yahoo开发的多用户调度器

容量调度器特点

  1. 多队列:每个队列可配置一定的资源量,每个队列采用FIFO调度策略
  2. 容量保证:管理员可为每个队列设置最低资源保证和资源使用上限
  3. 灵活性:如果一个队列中资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的任务提交,则其他队列借调的资源会归还给该队列
  4. 多租户:支持多用户共享集群和多应用程序同时进行,为防止同一个用户的作业独占资源,调度器会对同一个用户提交的作业所占资源进行限定

容量调度器资源分配算法

  • 队列资源分配

    复制代码
      从root用户开始,使用深度优先算法,优先选择资源占用率最低的队列分配资源
  • 作业资源分配

    复制代码
      默认按照提交作业的优先级和提交时间顺序分配资源
  • 容器资源分配

    复制代码
      按照容器的优先级分配资源;
      如果优先级相同,按照数据本地原则:(同HDFS机架感知策略)
      	1)任务和数据在同一节点
      	2)任务和数据在同一机架
      	3)任务和数据不在同一节点也不在同一机架

Fair Scheduler

公平调度器是Facebook开发的多用户调度器

公平调度器的特点

同队列所有任务共享资源,在时间尺度上获得公平的资源

与容量调度器的相同点

  1. 多队列:支持多队列作业,
  2. 容量保证:管理员可为每个队列设置最低资源保证和资源使用上限
  3. 灵活性:有剩余的资源可以暂时共享给那些需要资源的队列
  4. 多租户:支持多用户共享集群和多应用程序同时进行

与容量调度器的不同点

  • 核心调度策略不同

    复制代码
      容量调度器:优先选择资源利用率低的队列
      公平调度器:优先选择对资源缺额比例大的
  • 每个队列可以单独设置资源分配方式

    复制代码
      容量调度器:FIFO、DRF
      公平调度器:FIFO、FAIR、DRF

缺额

公平调度器的设计目标是:在时间尺度上,所有作业获得公平的资源。某一时刻一个作业应获资源和实际获取资源的差距叫"缺额"

公平调度器列队资源分配方式

  • FIFO策略

    复制代码
      公平调度器每个队列资源分配策略为FIFO时,此时公平调度器相当于容量调度器
  • FAIR策略

    复制代码
      Fair策略(默认)是一种基本最大最小公平算法实现的资源多路复用方式,默认情况下,每个队列内部采用该方式分配资源,无论有几个应用程序,平均分配当前的资源
      资源分配流程和容量调度器一致:
      	1)选择队列
      	2)选择作业
      	3)选择容器
      	每一步都按照公平策略分配资源
      	
      公平策略
      	
      	实际最小份额: mindshare = Min(资源需求量,配置的最小资源)
      	是否饥饿:    isNeedy = 资源使用量 < mindshare(实际最小份额)
      	资源分配比:   minShareRatio = 资源使用量 / Max(mindshare, 1)
      	资源使用权重比:useToWeigthRatio = 资源使用量 / 权重
  • DRF策略

    复制代码
      DRF(Dominant Resource Fairness),之前说的资源都是单一标准,比如只考虑内存(Yarn默认),但很多时候我们资源有很多种,
      例如内存、CPU等,DRF策略是对不同应用进行不同资源(内存和CPU)的合理比例分配

常用命令

8088端口查看的信息

  • 查看任务列表
bash 复制代码
yarn application -list
  • 查看任务状态
bash 复制代码
yarn application -status <applicationid>
  • 根据任务状态查询列表
bash 复制代码
yarn application -list -appStates <status>

<status>如下
  • 查看任务log
bash 复制代码
yarn logs -applicationId <applicationid>
  • 查看节点状态
bash 复制代码
yarn node -list -all
  • 查看队列状态
bash 复制代码
yarn queue -status default
相关推荐
武子康20 小时前
大数据-237 离线数仓 - Hive 广告业务实战:ODS→DWD 事件解析、广告明细与转化分析落地
大数据·后端·apache hive
大大大大晴天1 天前
Flink生产问题排障-Kryo serializer scala extensions are not available
大数据·flink
武子康3 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
武子康4 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP5 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库5 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟5 天前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
B站计算机毕业设计超人5 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
计算机程序猿学长5 天前
大数据毕业设计-基于django的音乐网站数据分析管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
大数据·django·课程设计
B站计算机毕业设计超人5 天前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计