【Hadoop】Apache Hadoop YARN

这篇具有很好参考价值的文章主要介绍了【Hadoop】Apache Hadoop YARN。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Hadoop】Apache Hadoop YARN,# 【==== HDFS&YARN ====】,hadoop,YARN,YARN任务调度,YARN架构,YARN命令,YARN任务提交流程,YARN 资源配置

🦄 个人主页—🎐开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 🎐✨🍁

感谢点赞和关注 ,每天进步一点点!加油!

目录

一、YARN概述

二、YARN基础架构

2.1 ResourceManager(RM)

2.1.1 Scheduler

2.1.2 ApplicationManager

2.2 ApplicationMaster(AM)

2.3 NodeManager(NM)

2.4 Container

三、YARN作业提交流程

四、YARN 常用命令和资源配置参数

4.1 Yarn常用命令

4.2 yarn-site.xml


一、YARN概述


Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的 资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

  • 资源管理系统:管理集群的cpu,内存,YARN没有管理磁盘,因为磁盘由HDFS管理 。
  • 调度平台:为来申请资源的应用合理分配资源
  • 通用性:支持各种计算框架,YARN不关心你干是干什么的,只关心你要的资源。

【Hadoop】Apache Hadoop YARN,# 【==== HDFS&YARN ====】,hadoop,YARN,YARN任务调度,YARN架构,YARN命令,YARN任务提交流程,YARN 资源配置

从上图中可以看出,集群最底层的是HDFS,在其之上的就是YARN层,而在YARN层上则是各种不同的计算框架。YARN资源调度不仅支持MapReduce,还支持其他很多框架,如 Hive 、Spark、Fink 等任务,且YARN能支持各种框架来读取HDFS上的数据。


二、YARN基础架构


【Hadoop】Apache Hadoop YARN,# 【==== HDFS&YARN ====】,hadoop,YARN,YARN任务调度,YARN架构,YARN命令,YARN任务提交流程,YARN 资源配置

2.1 ResourceManager(RM)


ResourceManager(RM)RM是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler) 应用程序管理器(Applications Manager,ASM)

调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。调度器仅根据各个应用程序的资源需求进行资源分配,而资源分配单位用一个抽象概念“资源容器”(Resource Container,简称Container)表示,Container是一个动态资源分配单位,它将内存、CPU、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源量。此外,Scheduler是一个可插拔的组件,用户可根据自己的需要设计新的调度器,YARN提供了多种直接可用的调度器,比如Fair Scheduler和Capacity Scheduler等。

2.1.1 Scheduler


Scheduler是一个可插拔的插件,负责各个运行中的应用的资源分配,受到资源容量,队列以及其他因素的影响。是一个纯粹的调度器,不负责应用程序的监控和状态追踪,不保证应用程序的失败或者硬件失败的情况对 TASK 重启,而是基于应用程序的资源需求执行其调度功能,使用了叫做资源 container 的概念,其中包括多种资源,比如,cpu,内存,磁盘,网络等。在 Hadoop 的 MapReduce 框架中主要有三种Scheduler:FIFO Scheduler,Capacity Scheduler 和 Fair Scheduler。

  • FIFO Scheduler:先进先出,不考虑作业优先级和范围,适合低负载集群。
  • Capacity Scheduler将资源分为多个队列,允许共享集群,有保证每个队列最小资源的使用。
  • Fair Scheduler:公平的将资源分给应用的方式,使得所有应用在平均情况下随着时间得到相同的资源份额。

2.1.2 ApplicationManager


ApplicationManager 主要负责接收 job 的提交请求,为应用分配第一个Container 来运行 ApplicationMaster,还有就是负责监控 ApplicationMaster,在遇到失败时重启 ApplicationMaster 运行的 Container。

2.2 ApplicationMaster(AM)


ApplicationMaster(AM)用户提交的每个应用程序均包含一个AM,主要功能包括:

  • 与ResourceManager调度器协商以获取资源(用Container表示);
  • 将得到的任务进一步分配给内部的任务(资源的二次分配);
  • 与NM通信以启动/停止任务;
  • 监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。

当一个 ApplicationMaster 启动后,会周期性的向 ResourceManager 发送心跳报告来确认其健康和所需的资源情况,在建好的需求模型中,ApplicationMaster 在发往 ResourceManager 中的心跳信息中封装偏好和限制,在随后的心跳中, ApplicationMaster 会对收到集群中特定节点上绑定了一定的资源的 Container 的租约,根据 ResourceManager 发来的 Container,ApplicationMaster 可以更新它的执行计划以适应资源不足或者过剩,Container 可以动态的分配和释放资源。

2.3 NodeManager(NM)


NodeManager(NM):NM是每个节点上的资源和任务管理器,一方面,它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AM的Container启动/停止等各种请求。

NodeManager 是 yarn 节点的一个“工作进程”代理,管理 hadoop 集群中独立的计算节点,主要负责与 ResourceManager 通信,负责启动和管理应用程序的 container 的生命周期,监控它们的资源使用情况( cpu 和内存),跟踪节点的监控状态,管理日志等。并报告给RM。

NodeManager 在启动时,NodeManager 向 ResourceManager 注册,然后发送心跳包来等待 ResourceManager 的指令,主要目的是管理 resourcemanager 分配给它的应用程序 container。NodeManager 只负责管理自身的 Container,它并不知道运行在它上面应用的信息。在运行期,通过 NodeManager 和 ResourceManager 协同工作,这些信息会不断被更新并保障整个集群发挥出最佳状态。

主要职责:
1、接收 ResourceManager 的请求,分配 Container 给应用的某个任务
2、和 ResourceManager 交换信息以确保整个集群平稳运行。ResourceManager 就是通过收集每个NodeManager的报告信息来追踪整个集群健康状态的,而 NodeManager 负责监控自身的健康状态。
3、管理每个 Container 的生命周期
4、管理每个节点上的日志
5、执行 Yarn 上面应用的一些额外的服务,比如 MapReduce 的 shuffle 过程。

2.4 Container


Container:Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示。YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。YARN仅支持CPU和内存两种资源,且使用了轻量级资源隔离机制Cgroups进行资源隔离。

YARN的资源管理和执行框架都是按主/从范例实现,节点管理器(NM)运行、监控每个节点并向集群的资源管理器(RM)报告资源的可用性状态,资源管理器最终为系统里所有应用分配资源。

特定应用的执行由ApplicationMaster控制,ApplicationMaster负责将一个应用分割成多个任务,并和资源管理器协调执行所需的资源,资源一旦分配好,ApplicationMaster就和节点管理器一起安排、执行、监控独立的应用任务。


三、YARN作业提交流程


【Hadoop】Apache Hadoop YARN,# 【==== HDFS&YARN ====】,hadoop,YARN,YARN任务调度,YARN架构,YARN命令,YARN任务提交流程,YARN 资源配置

1、客户端程序向 ResourceManager 提交应用并请求一个 ApplicationMaster 实例, ResourceManager 在应答中给出一个 applicationId 以及有助于客户端请求资源的资源容量信息。

2、ResourceManager 找到可以运行一个 Container 的 NodeManager,并在这个 Container 中启动 ApplicationMaster 实例。

Application Submission Context 发出响应,其中包含有:ApplicationId,用户名,队列以及其他启动 ApplicationMaster 的信息。

Container Launch Context(CLC)也会发给 ResourceManager,CLC提供了资源的需求,作业文件,安全令牌以及在节点启动 ApplicationMaster 所需要的其他信息。

当 ResourceManager 接收到客户端提交的上下文,就会给 ApplicationMaster 调度一个可用的 Container(通常称为container0)。然后ResourceManager就会联系 NodeManager 启动 ApplicationMaster,并建立 ApplicationMaster 的 RPC 端口和用于跟踪的 URL ,用来监控应用程序的状态。

3、ApplicationMaster 向 ResourceManager 进行注册,注册之后客户端就可以查询 ResourceManager 获得自己 ApplicationMaster 的详细信息,以后就可以和自己的 ApplicationMaster 直接交互了。在注册响应中,ResourceManager 会发送关于集群最大和最小容量信息。

4、ApplicationMaster根据resource-request协议向ResourceManager发送resource-request请求,ResourceManager会根据调度策略尽可能最优的为ApplicationMaster分配container资源,作为资源请求的应答发给ApplicationMaster。

5、当Container被成功分配之后,ApplicationMaster通过向NodeManager发送container-launch-specification信息来启动Container, container-launch-specification信息包含了能够让Container和ApplicationMaster交流所需要的资料,一旦container启动成功之后,ApplicationMaster就可以检查他们的状态,Resourcemanager不在参与程序的执行,只处理调度和监控其他资源,Resourcemanager可以命令NodeManager杀死container。

6、应用程序的代码在启动的Container中运行,并把运行的进度、状态等信息通过application-specific协议发送给ApplicationMaster,随着作业的执行,ApplicationMaster将心跳和进度信息发给ResourceManager,在这些心跳信息中,ApplicationMaster还可以请求和释放一些container。

7、在应用程序运行期间,提交应用的客户端主动和ApplicationMaster交流获得应用的运行状态、进度更新等信息,交流的协议也是application-specific协议。

8、一旦应用程序执行完成并且所有相关工作也已经完成,ApplicationMaster向ResourceManager取消注册然后关闭,用到所有的Container也归还给系统,当container被杀死或者回收,Resourcemanager就会通知NodeManager聚合日志并清理container专用的文件。


四、YARN 常用命令和资源配置参数


4.1 Yarn常用命令


列出所有的Application

yarn application -list

【Hadoop】Apache Hadoop YARN,# 【==== HDFS&YARN ====】,hadoop,YARN,YARN任务调度,YARN架构,YARN命令,YARN任务提交流程,YARN 资源配置

根据Application状态过滤任务

yarn application -list -appStates XXX(XXX - ALL、NEW、NEW_SAVING、SUBMITTED、ACCEPTED、RUNNING、FINISHED、FAILED、KILLED)

【Hadoop】Apache Hadoop YARN,# 【==== HDFS&YARN ====】,hadoop,YARN,YARN任务调度,YARN架构,YARN命令,YARN任务提交流程,YARN 资源配置

任务状态

yarn application -status  application-id

【Hadoop】Apache Hadoop YARN,# 【==== HDFS&YARN ====】,hadoop,YARN,YARN任务调度,YARN架构,YARN命令,YARN任务提交流程,YARN 资源配置

杀死任务

yarn application -kill application-id

查询Application日志

yarn logs -applicationId <ApplicationId>

列出所有NM节点

【Hadoop】Apache Hadoop YARN,# 【==== HDFS&amp;YARN ====】,hadoop,YARN,YARN任务调度,YARN架构,YARN命令,YARN任务提交流程,YARN 资源配置

打印队列信息

yarn queue -status kangll

【Hadoop】Apache Hadoop YARN,# 【==== HDFS&amp;YARN ====】,hadoop,YARN,YARN任务调度,YARN架构,YARN命令,YARN任务提交流程,YARN 资源配置

YARN 任务在WEB页面上可以看资源使用和运行情况,ResourceManager IP:8088

【Hadoop】Apache Hadoop YARN,# 【==== HDFS&amp;YARN ====】,hadoop,YARN,YARN任务调度,YARN架构,YARN命令,YARN任务提交流程,YARN 资源配置

如下也可以看到各个NM上的内存和 CPU核数使用情况

【Hadoop】Apache Hadoop YARN,# 【==== HDFS&amp;YARN ====】,hadoop,YARN,YARN任务调度,YARN架构,YARN命令,YARN任务提交流程,YARN 资源配置

4.2 yarn-site.xml


如下是常用的的YARN资源配置参数

<configuration  xmlns:xi="http://www.w3.org/2001/XInclude">


  <!-- AppMaster重试次数 -->
  <property>
    <name>yarn.resourcemanager.am.max-attempts</name>
    <value>2</value>
  </property>
  <!-- 容量调度 -->
  <property>
    <name>yarn.resourcemanager.scheduler.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
  </property>
  <!-- 容器最大内存 -->
  <property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>20480</value>
  </property>
  <!-- 容器最大CPU核数 -->
  <property>
    <name>yarn.scheduler.maximum-allocation-vcores</name>
    <value>16</value>
  </property>
  <!-- 容器最小内存 -->
  <property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>512</value>
  </property>
  <!-- 容器最小CPU核数 -->
  <property>
    <name>yarn.scheduler.minimum-allocation-vcores</name>
    <value>1</value>
  </property>
  <!-- nodemanager CPU核数 -->
  <property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>16</value>
  </property>
  <!--  nodemanager 内存-->
  <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>20480</value>
  </property>
  <!-- nodemanager CPU使用限制 -->
  <property>
    <name>yarn.nodemanager.resource.percentage-physical-cpu-limit</name>
    <value>80</value>
  </property>


</configuration>

参考链接:

百度安全验证文章来源地址https://www.toymoban.com/news/detail-744925.html

到了这里,关于【Hadoop】Apache Hadoop YARN的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hadoop Yarn 配置多队列的容量调度器

    配置多队列的容量调度器 首先,我们进入 Hadoop 的配置文件目录中( $HADOOP_HOME/etc/hadoop ); 然后通过编辑容量调度器配置文件 capacity-scheduler.xml 来配置多队列的形式。 默认只有 default 队列,显然一个队列不符合集群的生产环境,会造成队列阻塞,资源分配不合理的情况等等

    2024年02月11日
    浏览(47)
  • 单机搭建hadoop环境(包括hdfs、yarn、hive)

    单机可以搭建伪分布式hadoop环境,用来测试和开发使用,hadoop包括: hdfs服务器, yarn服务器,yarn的前提是hdfs服务器, 在前面两个的基础上,课可以搭建hive服务器,不过hive不属于hadoop的必须部分。 过程不要想的太复杂,其实挺简单,这里用最糙最快最直接的方法,在我的单

    2024年02月20日
    浏览(54)
  • Middleware ❀ Hadoop功能与使用详解(HDFS+YARN)

    Hadoop是一个开源的分布式计算和存储框架,由Apache基金会开发和维护。Hadoop 为庞大的计算机集群提供可靠的、可伸缩的应用层计算和存储支持,它允许使用简单的编程模型跨计算机群集分布式处理大型数据集,并且支持在单台计算机到几千台计算机之间进行扩展。 Hadoop使用

    2024年02月07日
    浏览(42)
  • Hadoop三大“金刚”完美剖析 ─────── HDFS、MapReduce、YARN

    因为HDFS是分布式储存文件的模式,所以在储存文件的数据时,会将文件切分为大小一致的数据块, 如果出现文件大小不是128M的倍数时,那么最后一个文件会与之前切分文件大小不一致。 被切分成的数据块就是Block块,NameNode将Block块进行分布式储存到DataNode中。    (Block块

    2024年04月10日
    浏览(43)
  • 深入理解 Hadoop (七)YARN资源管理和调度详解

    深入理解 Hadoop 系列文章已完结,总共七篇文章,直达链接: 深入理解 Hadoop (一)网络通信架构与源码浅析 深入理解 Hadoop (二)HDFS架构演进 深入理解 Hadoop (三)HDFS文件系统设计实现 深入理解 Hadoop (四)HDFS源码剖析 深入理解 Hadoop (五)YARN核心工作机制浅析 深入理解

    2024年01月22日
    浏览(44)
  • 【大数据】HADOOP-YARN容量调度器配置详解

    Capacity调度器具有以下的几个特性: 层次化的队列设计,这种层次化的队列设计保证了子队列可以使用父队列设置的全部资源。这样通过层次化的管理,更容易合理分配和限制资源的使用。 容量保证,队列上都会设置一个资源的占比,这样可以保证每个队列都不会占用整个集

    2024年02月01日
    浏览(45)
  • 【Hadoop】Yarn 任务管理指令

    列出所有Application : yarn application -list 查看尝试运行的应用 yarn applicationattempt -list application_1612577921195_0001 杀死指定应用 : yarn application -kill application_1612577921195_0001 查看指定应用日志 : yarn logs -applicationId application_1612577921195_0001 查看节点状态 : yarn node -list -all 查看队列状态 : y

    2024年02月20日
    浏览(32)
  • Hadoop3教程(二十五):Yarn的多队列调度器使用案例

    生产环境下怎么创建队列? 调度器默认只会开一个default队列,这个肯定是不满足生产要求的; 可以按照框架来划分队列。比如说hive/spark/flink的任务分别放在不同的队列里,不过这么做的效率不高,企业用的不是很多。 按照业务模块来划分队列。比如说登录注册的业务,单

    2024年02月02日
    浏览(45)
  • Hadoop——HDFS、MapReduce、Yarn期末复习版(搭配尚硅谷视频速通)

    1.1 HDFS定义 HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次, 它是分布式的 ,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。 HDFS的使用场景 :适合一次写入,多次读出的场景。一个文件经过创建、写入和关

    2024年01月17日
    浏览(42)
  • 【运维】hadoop 集群安装(三)hdfs、yarn集群配置、nodemanager健康管理讲解

    上篇简单说明了多节点的hadoop节点怎么安装,但是没有细致的分析hadoop相关配置,具体怎么根据环境进行配置,接下来我们对这些配置进行讲解 Daemon Environment Variable NameNode HDFS_NAMENODE_OPTS DataNode HDFS_DATANODE_OPTS Secondary NameNode HDFS_SECONDARYNAMENODE_OPTS ResourceManager YARN_RESOURCEMANAGER_OP

    2024年02月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包