统一资源管理和调度框架Yarn
- Yarn简介
- Yarn(Yet Another Resource Negotiator)是Hadoop生态系统中的资源管理和调度框架。它的主要作用是管理集群中的计算资源(如CPU、内存等),并对运行在集群上的应用程序进行调度。
- 在传统的Hadoop 1.0中,MapReduce既是计算模型又是资源管理和调度框架,这种紧耦合的设计在面对多种计算框架和复杂的应用场景时存在诸多局限。Yarn的出现将资源管理和作业调度/监控的功能从MapReduce中分离出来,使得多种计算框架(如MapReduce、Spark、Flink等)可以共享集群资源。
- Yarn的基本架构
- ResourceManager(RM)
- 它是Yarn集群中的主节点管理组件。主要负责整个集群资源的统一管理和分配。例如,它会跟踪集群中各个节点的可用资源情况,包括每个节点的CPU核心数、内存大小等信息。
- RM接收来自各个应用程序(Application)的资源请求,然后根据调度策略(如公平调度、容量调度等)将资源分配给不同的应用程序。
- NodeManager(NM)
- 运行在集群中的每个计算节点上。它负责管理本节点的资源,包括向ResourceManager汇报本节点的资源使用情况(如已使用的CPU、内存,还剩余多少资源等)。
- NM还负责启动和停止容器(Container)。容器是Yarn中资源分配的基本单位,它封装了一定量的CPU、内存等资源,应用程序的任务(如MapReduce中的Map任务或Reduce任务)在容器中运行。
- ApplicationMaster(AM)
- 当一个应用程序提交到Yarn集群时,ResourceManager会为该应用程序启动一个ApplicationMaster。AM负责和ResourceManager协商资源,并且管理和监控应用程序内部各个任务的执行。
- 例如,在一个MapReduce应用程序中,ApplicationMaster会根据任务的优先级和资源需求,向ResourceManager请求Map任务和Reduce任务所需的容器资源,并且在任务执行过程中监控任务的进度和状态,当任务失败时可以进行重新调度。
- Yarn的工作流程
- 应用程序提交阶段:用户将应用程序提交到Yarn集群,这个应用程序可以是MapReduce作业、Spark应用等。此时,应用程序会向ResourceManager发送启动请求。
- 资源分配阶段:ResourceManager收到请求后,会根据调度策略为该应用程序分配一个ApplicationMaster,并在集群中的某个节点上启动它。然后,ApplicationMaster会根据应用程序的需求向ResourceManager请求容器资源。
- 任务执行阶段:ResourceManager根据资源的可用性和调度策略为ApplicationMaster分配容器。ApplicationMaster将应用程序的任务(如MapReduce中的Map任务)分发到分配好的容器中,由NodeManager在容器中启动和执行任务。在任务执行过程中,NodeManager会不断向ResourceManager汇报资源使用情况和任务状态,ApplicationMaster也会监控任务的执行情况。
- 应用程序完成阶段:当应用程序的所有任务都执行完成后,ApplicationMaster会向ResourceManager注销自己,释放所有占用的资源。
- Yarn的调度策略
- 公平调度(Fair Scheduling)
- 公平调度的目标是让所有的应用程序在长时间内能够公平地共享集群资源。它会将资源平均分配给每个应用程序,确保每个应用程序都能获得一定的资源来执行任务。
- 例如,假设有两个应用程序A和B同时提交到集群,在公平调度策略下,集群的资源会被平均分配给A和B,使得它们能够同时开始执行任务,而不是一个应用程序占用全部资源,另一个等待。
- 容量调度(Capacity Scheduling)
- 容量调度是将集群资源划分成多个队列,每个队列有一定的资源容量。不同的应用程序可以被分配到不同的队列中,每个队列可以独立地进行资源分配和调度。
- 例如,企业可以根据部门划分队列,如研发部门队列、测试部门队列等。研发部门队列可以被分配70%的集群资源,测试部门队列可以被分配30%的集群资源,这样可以确保每个部门的应用程序都能在自己所属的队列资源范围内进行合理的调度。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/854340.html
如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!