做短租哪个网站好,深圳手机网站建设报价,uc官网网站开发者中心,手机版企页网站案例什么是YARN#xff1f;
YARN#xff08;Yet Another Resource Negotiator#xff09;是Apache Hadoop生态系统中的一个重要组件#xff0c;用于资源管理和作业调度。它是Hadoop 2.x版本中的一个关键特性#xff0c;取代了旧版本中的JobTracker和TaskTracker。YARN的设计目…什么是YARN
YARNYet Another Resource Negotiator是Apache Hadoop生态系统中的一个重要组件用于资源管理和作业调度。它是Hadoop 2.x版本中的一个关键特性取代了旧版本中的JobTracker和TaskTracker。YARN的设计目标是使Hadoop能够处理更广泛的工作负载包括批处理、交互式查询、流处理以及其他类型的工作负载。
为什么需要YARN
YARN的引入解决了Hadoop 1.x版本中存在的一些限制和不足提供了更灵活、更高效的资源管理和作业调度。以下是一些需要YARN的主要原因
多样化的工作负载支持 -Hadoop 1.x版本中的MapReduce框架适用于批处理作业但不太适合处理交互式查询、流处理等多样化的工作负载。YARN的出现使得Hadoop可以同时运行多种类型的应用程序包括批处理、交互式查询如Apache Hive、Apache Tez、流处理如Apache Storm、Apache Flink等。资源隔离和多租户支持 YARN支持在同一集群上运行多个应用程序并能够对资源进行有效的隔离防止一个应用程序的资源消耗影响其他应用程序的性能。这种多租户支持使得企业可以更高效地共享集群资源并在不同的团队、部门或业务单位之间进行资源划分和管理。动态资源分配 YARN允许应用程序根据需要动态申请和释放资源而不是像Hadoop 1.x版本那样静态地将资源分配给作业。这种动态资源分配机制可以提高集群资源的利用率并更好地适应不同作业的资源需求变化。支持更大规模的集群 YARN的架构设计更适合处理大规模集群能够有效地管理数千甚至数万个节点的资源和作业。这使得Hadoop可以在更大规模的数据集上进行处理和分析满足日益增长的数据处理需求。更灵活的作业调度 YARN提供了灵活的作业调度框架可以支持多种调度策略和调度器插件。这使得用户可以根据自己的需求选择最适合的调度器并对调度策略进行定制以满足不同作业的性能和资源需求。
YARN的基本核心思想
YARN的基本核心思想是将资源管理和作业调度从特定的计算框架如MapReduce中分离出来使其成为单独的守护进程使得Hadoop集群能够更通用地支持多种类型的应用程序和工作负载。 这个想法是拥有一个全局的 ResourceManager ( RM ) 和每个应用程序的 ApplicationMaster ( AM )。应用程序可以是单个作业也可以是作业的 DAG。ResourceManager 和 NodeManager 构成了数据计算框架。 ResourceManager是系统中所有应用程序之间资源仲裁的最终权威。 NodeManager 是每台机器的框架代理负责容器、监视其资源使用情况CPU、内存、磁盘、网络并将其报告给ResourceManager/Scheduler。每个应用程序的 ApplicationMaster 实际上是一个特定于框架的库其任务是与 ResourceManager 协商资源并与 NodeManager 一起执行和监视任务。
在Hadoop集群中YARN主要有以下几个核心组件
ResourceManager资源管理器ResourceManager是YARN集群中的主节点负责管理整个集群的资源分配和作业调度。它跟踪可用资源并为提交到集群的应用程序分配资源。NodeManager节点管理器NodeManager运行在每个集群节点上负责管理该节点上的资源并与ResourceManager通信以报告节点的资源使用情况和可用性。ApplicationMaster应用程序管理器每个提交到YARN集群的应用程序都有一个对应的ApplicationMaster。ApplicationMaster负责与ResourceManager协商资源、监控作业进度并向ResourceManager请求更多资源或报告作业完成情况。
ResourceManager 有两个主要组件Scheduler 和ApplicationsManager。 调度程序负责将资源分配给受熟悉的容量、队列等约束的各种正在运行的应用程序。调度程序是纯粹的调度程序因为它不执行应用程序状态的监视或跟踪。此外它不保证重新启动由于应用程序故障或硬件故障而失败的任务。 Scheduler根据应用程序的资源需求执行其调度功能它是基于资源容器的抽象概念来实现的资源容器包含内存、CPU、磁盘、网络等元素。
调度程序具有可插入策略负责在各种队列、应用程序等之间划分集群资源。当前的调度程序例如CapacityScheduler和FairScheduler就是插件的一些示例。
ApplicationsManager 负责接受作业提交、协商第一个容器来执行应用程序特定的 ApplicationMaster 并提供在失败时重新启动 ApplicationMaster 容器的服务。每个应用程序的 ApplicationMaster 负责与 Scheduler 协商适当的资源容器跟踪其状态并监控进度。
hadoop-2.x 中的 MapReduce 保持了与之前稳定版本 (hadoop-1.x) 的API 兼容性。这意味着所有 MapReduce 作业仍应在 YARN 之上运行只需重新编译即可。
YARN通过ReservationSystem支持资源预留的概念ReservationSystem 是一个组件允许用户指定随时间和时间限制例如截止日期的资源配置文件并预留资源以确保重要作业的可预测执行。ReservationSystem跟踪资源随着时间的推移对预留进行准入控制并动态指示底层调度程序以确保预留得到满足。
为了将 YARN 扩展至数千个节点以上YARN通过YARN Federation功能支持联合概念。联合允许透明地将多个纱线子集群连接在一起并使它们显示为单个大型集群。这可用于实现更大的规模和/或允许多个独立集群一起用于非常大的作业或用于具有跨所有集群的容量的租户。
在 YARN 上运行的应用程序 批处理应用程序 批处理作业是Hadoop最常见的用例之一它们通常涉及对大规模数据集进行分析和处理。使用YARN批处理作业可以通过MapReduce框架或其他批处理引擎如Apache Spark、Apache Flink等来运行。交互式查询 交互式查询通常用于对数据进行即席查询和分析。通过YARN可以在集群上运行诸如Apache Hive、Apache Impala、Apache Drill等交互式查询引擎这些引擎能够实时响应用户的查询请求。流处理应用程序 流处理应用程序用于对实时数据流进行处理和分析。通过YARN可以在集群上运行流处理引擎如Apache Storm、Apache Flink、Apache Kafka Streams等以实时处理数据流并生成相应的输出。机器学习和数据挖掘 YARN也可以支持运行机器学习和数据挖掘算法。例如可以使用Apache Spark的机器学习库MLlib或Apache Flink的机器学习库来在集群上训练和部署机器学习模型。图计算 图计算应用程序用于在图结构数据上执行复杂的分析和计算。通过YARN可以在集群上运行图计算引擎如Apache Giraph、Apache Spark GraphX等来处理大规模的图数据。其他类型的应用程序 此外YARN还可以支持各种其他类型的应用程序包括ETLExtract-Transform-Load作业、数据流处理、实时分析等。YARN的通用性和灵活性使得它能够满足不同类型应用程序的运行需求。
应用程序如何在 YARN 上运行 应用程序提交 用户通过YARN客户端提交应用程序。在提交过程中用户需要指定应用程序的资源需求、启动命令、应用程序类型等信息。通常应用程序的启动命令会包括指定应用程序的jar包或可执行文件、主类名对于Java应用程序、应用程序的输入和输出路径等信息。ResourceManager分配资源 ResourceManager接收到用户提交的应用程序后会根据应用程序的资源需求和集群中的资源情况进行资源分配。ResourceManager会为应用程序分配所需的计算资源如CPU和内存资源以及其他必要的资源如网络带宽。NodeManager启动容器 一旦资源分配完成ResourceManager会通知集群中相应的NodeManager在相应的节点上启动一个或多个容器Container。容器是YARN中的基本执行单位它包含了运行应用程序所需的计算资源、环境变量等信息。应用程序启动 一旦容器启动完成应用程序的启动命令将被执行。这可能涉及启动应用程序的主进程例如执行Java的main()方法或运行可执行文件。ApplicationMaster启动 应用程序的启动过程通常会涉及到一个特殊的组件称为ApplicationMaster。ApplicationMaster负责与ResourceManager通信协商资源、监控作业进度并向ResourceManager请求更多资源或报告作业完成情况。ApplicationMaster运行在集群中的一个容器中并由ResourceManager负责启动和监控。作业执行一旦ApplicationMaster启动应用程序就可以开始在容器中执行。根据应用程序的类型和逻辑它可能会涉及到数据的读取、处理、计算以及生成结果等过程。作业完成 一旦应用程序执行完成ApplicationMaster会向ResourceManager报告作业完成情况并请求释放所占用的资源。资源释放 ResourceManager会相应地释放容器所占用的资源并通知NodeManager停止相应的容器。至此应用程序的执行过程结束集群资源被释放可以被其他应用程序使用。