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
相关推荐
在未来等你3 小时前
Elasticsearch面试精讲 Day 13:索引生命周期管理ILM
大数据·分布式·elasticsearch·搜索引擎·面试
Elastic 中国社区官方博客4 小时前
Elasticsearch:智能搜索的 MCP
大数据·人工智能·elasticsearch·搜索引擎·全文检索
未来之窗软件服务6 小时前
浏览器开发CEFSharp+X86 (十六)网页读取电子秤数据——仙盟创梦IDE
大数据·智能硬件·浏览器开发·仙盟创梦ide·东方仙盟·东方仙盟网页调用sdk
阿豪38 小时前
2025 年职场转行突围:除实习外,这些硬核证书让你的简历脱颖而出(纯经验分享)
大数据·人工智能·经验分享·科技·信息可视化·产品经理
张驰课堂8 小时前
老树发新芽:六西格玛培训为石油机械制造注入持久活力
大数据·人工智能·制造
卡卡_R-Python9 小时前
大数据探索性分析——抽样技术应用
大数据·r
伍哥的传说9 小时前
Lodash-es 完整开发指南:ES模块化JavaScript工具库实战教程
大数据·javascript·elasticsearch·lodash-es·javascript工具库·es模块·按需导入
请提交用户昵称10 小时前
大数据各组件flume,datax,presto,DolphinScheduler,findBI在大数据数仓架构中的作用和功能。
大数据·flume·datax·dolphin·presto·findbi·大数据组件
IT果果日记10 小时前
详解DataX开发达梦数据库插件
大数据·数据库·后端
用户Taobaoapi201411 小时前
微店API秘籍!轻松获取商品详情数据
大数据·数据挖掘·数据分析