yarn的概述
1.Yarn的定义 2.Yarn的三大组件 3.Yarn的调度策略
1. YARN的定义
YARN(Yet Another Resource Negotiator) 是Hadoop生态系统中的一个资源管理框架,用于管理和调度集群中的计算资源。它允许多个应用程序在同一个集群上高效地运行,同时确保资源的隔离和共享。
-
核心目标:
-
提高集群资源的利用率。
-
支持多种计算框架(如MapReduce、Spark、Flink等)。
-
提供资源隔离和调度机制。
-
2. YARN的三大组件
YARN主要由以下三大组件构成:
2.1 ResourceManager(RM)
-
功能:
-
负责全局资源的管理和分配。
-
接收应用程序的资源请求,并分配资源。
-
监控NodeManager的状态和资源使用情况。
-
-
位置:
-
通常运行在一个独立的节点上,作为集群的主节点。
-
2.2 NodeManager(NM)
-
功能:
-
管理单个节点上的资源(如CPU、内存)。
-
启动和管理容器(Container),容器是资源分配的最小单位。
-
监控容器的资源使用情况,并向ResourceManager汇报。
-
-
位置:
-
每个计算节点上运行一个NodeManager。
-
2.3 ApplicationMaster(AM)
-
功能:
-
每个应用程序运行时都会启动一个ApplicationMaster。
-
负责与ResourceManager协商资源,并请求NodeManager启动容器。
-
管理应用程序的生命周期,包括任务的启动、监控和失败处理。
-
-
位置:
-
ApplicationMaster运行在某个NodeManager节点上,由ResourceManager分配。
-
3. YARN的调度策略
YARN提供了多种调度策略,用于管理资源分配和任务调度。以下是常见的调度器:
3.1 FIFO调度器(First-In-First-Out Scheduler)
-
特点:
-
最简单的调度策略。
-
按照应用程序提交的顺序依次分配资源。
-
适用于单租户环境,但在多租户环境中可能导致资源饥饿问题。
-
3.2 容量调度器(Capacity Scheduler)
-
特点:
-
支持多租户环境。
-
将集群资源划分为多个队列(Queue),每个队列可以分配一定比例的资源。
-
支持队列之间的资源共享和弹性扩展。
-
适用于生产环境,能够保证不同用户或应用程序的资源需求。
-
-
配置示例:
xml复制
<property><name>yarn.scheduler.capacity.root.queues</name><value>default,queue1,queue2</value> </property> <property><name>yarn.scheduler.capacity.root.default.capacity</name><value>50</value> </property> <property><name>yarn.scheduler.capacity.root.queue1.capacity</name><value>30</value> </property> <property><name>yarn.scheduler.capacity.root.queue2.capacity</name><value>20</value> </property>
3.3 公平调度器(Fair Scheduler)
-
特点:
-
动态分配资源,确保所有运行的应用程序都能获得公平的资源份额。
-
支持资源池(Pool)的概念,可以为不同用户或应用程序分配资源池。
-
适用于多租户环境,能够避免资源饥饿问题。
-
-
配置示例:
xml复制
<property><name>yarn.scheduler.fair.allocation.file</name><value>/path/to/fair-scheduler.xml</value> </property>
在
xmlfair-scheduler.xml
中配置资源池:复制
<allocations><pool name="default"><minResources>1024 mb, 1 vcores</minResources><maxResources>4096 mb, 4 vcores</maxResources></pool><pool name="pool1"><minResources>2048 mb, 2 vcores</minResources><maxResources>8192 mb, 8 vcores</maxResources></pool> </allocations>
总结
-
YARN 是一个资源管理框架,用于管理和调度集群中的计算资源。
-
三大组件:
-
ResourceManager:全局资源管理。
-
NodeManager:节点资源管理。
-
ApplicationMaster:应用程序管理。
-
-
调度策略:
-
FIFO调度器:简单,适合单租户。
-
容量调度器:支持多租户,资源划分。
-
公平调度器:动态分配资源,适合多租户。
-