当前位置: 首页 > news >正文

Hadoop(YARN)

文章目录

    • YARN基础架构
    • YARN工作原理
    • YARN调度器和调度算法
      • 先进先出调度器
      • 容量调度器
      • 公平调度器
    • YARN常用命令

YARN基础架构

YARN是Hadoop集群的资源管理和调度系统,它负责为各种分布式计算任务分配和管理资源,包含以下组件:ResourceManager,NodeManager,ApplicationMaster, Container。

  • ResourceManager(RM):负责整个集群的资源管理和分配,接收来自NodeManager的资源使用报告,并根据策略分配资源给各个应用程序。
  • NodeManager(NM):运行在单个节点上,负责管理单个节点的资源,如CPU和内存,并向ResourceManager汇报资源使用情况。
  • ApplicationMaster(AM):负责为每个应用程序申请资源和任务调度,向ResourceManager申请资源,再与NodeManager交互以启动和监控任务。
  • Container :YARN中的资源抽象,封装了某个节点上的资源,如内存和CPU等,Container是执行任务的基本单位。
    在这里插入图片描述

YARN工作原理

在这里插入图片描述
一开始提交 MR 程序到客户端所在节点,然后YarnRunner 向 ResourceManager 申请一个 Application,ResourceManager 将运行该应用程序的资源提交路径返回给 YarnRunner,应用程序根据路径将运行所需资源(运行jar包和切片参数等信息)提交到 HDFS 上,资源提交完毕后,向ResourceManager 申请运行 mrAppMaster,ResourceManager 将用户的请求初始化为一个Task放入FIFO队列中,NodeManager 再从FIFO队列领取Task 后创建Container容器,Container 从 HDFS 上下载运行资源到本地,然后运行 MRAppmaster程序,MRAppmaster 向 ResourceManager 申请运行 MapTask ,ResourceManager 将请求封装为task放入队列中,其他 NodeManager从队列领取任务并创建容器,MRAppmaster 向领取到任务的 NodeManager 发送程序启动脚本,NodeManager 执行 MapTask,执行完后数据存储在分区,MrAppMaster 等所有 MapTask 执行完,向 ResourceManager 申请容器运行 ReduceTask,ReduceTask 向 MapTask 获取执行结果并汇总,程序运行完毕后,MrAppMaster 会向 ResourceManager 申请注销自己。

YARN调度器和调度算法

Hadoop作业调度器主要有三种,分别是先进先出调度器(FIFO)、容量调度器(Capacity Scheduler)和公平调度器(Fair Scheduler), 在Hadoop3.1.3中, 默认的资源调度器是容量调度器,CDH 框架默认调度器是公平调度器。

先进先出调度器

FIFO 调度器(First In First Out):一个队列根据作业提交的先后顺序,先来先服务。
在这里插入图片描述
优点:易于理解,实现简单。
缺点:只支持单个队列,无法满足多用户或多应用程序同时运行。

容量调度器

容量调度器是Yahoo开发的多用户调度器,它支持多队列,每个队列可以配置一定的资源量。
在这里插入图片描述
特点:

  • 多队列:每个队列可配置一定的资源量,采用FIFO调度策略。

  • 容量保证:可以为每个队列设置资源最低保证和使用上限。

  • 灵活性:当队列资源有剩余时,可以先借给其他队列使用,等该队列有新的应用程序提交时,其他队列需要归还资源给该队列。

  • 多租户:支持多用户共享集群资源,为了防止单个用户作业独占队列资源,可以限定用户作业所占的资源量。

容量调度器的资源分配策略
在这里插入图片描述

  • 队列资源分配方式

    从根节点出发,使用dfs算法,系统优先选择资源占用率最低的队列来分配资源。

  • 作业资源分配方式

    默认情况下,根据作业提交的优先级以及提交的时间先后顺序分配。

  • 容器资源分配方式

    首先按照容器的优先级分配,若优先级相同,则根据数据本地性原则进行分配:首选任务和数据位于同一节点的情况,其次是任务和数据在同一机架但不同节点的情况,最后是任务和数据既不在同一节点也不在同一机架的情况。

公平调度器

公平调度器是一个多用户调度器,具有容量调度器以上的所有特点。公平调度器设计目标是:在时间维度上,所有的作业能够得到公平的资源分配,一个作业应获的资源和实际获取资源的差距叫缺额,公平调度器会优先为缺额大的作业分配更多的资源,从而缩小各个作业之间的资源差距。

在这里插入图片描述
与容量调度器的区别

  1. 调度策略不同

容量调度器:优先选择资源利用率低的队列分配资源。
公平调度器:优先选择资源缺额比例大的队列分配资源。

  1. 队列资源分配方式不同

容量调度器:FIFO、 DRF

公平调度器:FIFO、FAIR、DRF

公平调度器的资源分配策略

1)FIFO策略

公平调度器若采用此策略就相当于容量调度器。

2)Fair策略(默认的实现方式)

Fair基于公平算法分配资源,若一个队列中有两个应用程序同时运行,则每个应用程序可得到1/2的资源,如果有三个应用程序同时运行,则每个应用程序可得到1/3的资源。

资源的分配流程和容量调度器一致,按照队列,作业,容器的顺序分配,每一步都是按照公平策略分配资源。

在这里插入图片描述

YARN常用命令

启动YARN

./start-yarn.sh

在这里插入图片描述

再启动历史服务器

 mapred --daemon start historyserver

在这里插入图片描述

访问localhost:19888/jobhistory/app查看YARN的WEB UI页面
在这里插入图片描述
1)查看所有任务

yarn application -list

2)Kill 掉任务

yarn application -kill applicationId

3)查看Container日志

yarn logs -applicationId -containerId

4)查看Application日志

yarn logs -applicationId

5)查看所有容器

yarn container -list

6)查看队列

yarn queue -status default

7)查看节点

yarn node -list -all

http://www.mrgr.cn/news/70761.html

相关文章:

  • 什么是 C++ 中的模板特化和偏特化?如何进行模板特化和偏特化?
  • 数据结构-树状数组专题(1)
  • RHCE的学习(22)
  • C语言中const char *字符进行切割实现
  • SMMU软件指南操作之翻译过程概述
  • CUDA补充笔记
  • 科研绘图系列:R语言多图形组合(barplot boxplot stacked plots)
  • CAN总线物理层特性详细分析
  • flutter调试
  • Ansys EMC Plus:以 Touchstone 格式计算和导出 S 参数
  • Python爬虫
  • 双指针(二)双指针到底是怎么个事
  • POP3、SMTP、FTP、HTTP、BGP、DNS、DHCP、RIP、Ping、Traceroute
  • 十、有C/C++/Java基础,迅速掌握Python,B站黑马2022版教程笔记(自用)
  • 高字节,低字节,大端序,小端序
  • 学习python的第九天之数据类型——tuple元组
  • 数学建模模型算法-Python实现
  • 自动渗透测试与手动渗透测试
  • springboot和vue:十六、JWT跨域认证代码(Cookie、Session、Token)
  • 深入浅出JUC常用同步器
  • 【漏洞复现】用友 U8CRM leadconversion.php Sql注入漏洞
  • 基于STM32U575RIT6智能除湿器项目
  • 【星闪EBM-H63开发板】AT固件的配置与测试
  • 121页PPT | 企业战略规划全景:战略设计、工具、模板和分析方法
  • JAVA完成猜数字小游戏
  • python练习-Django web入门