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
相关推荐
cc5725026533 小时前
高考志愿填报:大数据相关专业到底怎么选?
大数据·高考
本旺3 小时前
Elasticsearch 前缀匹配性能优化实战,附4种方式即执行计划判别
大数据·elasticsearch·性能优化
hhzz4 小时前
Python大数据实战(十六):音乐推荐系统——基于协同过滤算法构建个性化歌单引擎
大数据·人工智能·python·数据挖掘·数据分析
泛普软件6 小时前
工程合约管理软件具备哪些核心功能,解决合同结算各类纠纷难题
大数据·人工智能·区块链
Elastic 中国社区官方博客8 小时前
Elastic 在 Everest Group 企业搜索产品 PEAK Matrix® 评估 2026 中被评为领导者
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索
重庆传粉科技10 小时前
传粉科技助力美国房产经纪企业Homequest开拓中国市场
大数据·人工智能
Java小白笔记10 小时前
Codex Skills 分类整理
大数据·人工智能·elasticsearch·搜索引擎·ai·ai编程·ai写作
杨逢昌工厂6S管理10 小时前
26-杨逢昌:制造企业6S改善提案落地低效解决方案——四级分级激励标准化体系,成效验证:车间现场熵增隐患下降65%。
大数据
一只专注api接口开发的技术猿11 小时前
电商评论自动化监控与情感数据分析完整落地教程(附可直接运行 Python 代码)
大数据·数据库·python·数据分析·自动化
AIGS00111 小时前
企业AI落地:Agent OS 治理框架实践
java·大数据·人工智能·机器学习·人工智能ai大模型应用