前言Yarn作为Hadoop生态中的核心资源调度平台负责为MapReduce、Spark、Flink等运算程序分配CPU、内存等服务器资源其调度器的选择直接影响集群资源的利用率和任务执行效率。本文干货满满新手友好将详细介绍Yarn的三种调度器核心特性、适用场景以及默认调度器的配置与修改方法结合实操细节帮助大家快速掌握Yarn调度器的核心知识点轻松应对集群调度配置需求。一、Yarn核心基础回顾在了解调度器之前先简单回顾Yarn的核心定位和工作流程帮助大家建立整体认知Yarn核心定位分布式资源调度器相当于分布式操作系统平台为上层运算程序MR/spark/flink提供资源支持。Hadoop核心组成hadoop HDFS MapReduce Yarn其中HDFS负责存储数据MapReduce负责分布式计算Yarn负责资源调度。Yarn核心工作流程客户端提交作业 → ResourceManagerRM接收请求并调度 → NodeManagerNM创建Container启动ApplicationMasterAM → AM申请资源并监控任务执行 → 任务完成后AM注销。Yarn的核心调度能力就体现在ResourceManagerRM对任务的调度逻辑上不同调度器对应不同的资源分配规则下面我们逐一拆解三种核心调度器的细节。二、Yarn的三种调度器详解Yarn提供了三种核心任务调度策略分别是FIFO Scheduler、Capacity Scheduler和Fair Scheduler每种调度器有其独特的适用场景和工作逻辑下面逐一拆解。2.1 FIFO Scheduler先进先出调度器这是最基础、最简单的调度器核心逻辑就是“先来后到”将所有提交的应用按照提交顺序排成一个单一队列前一个任务执行完成后后一个任务才能开始执行无任何资源隔离机制。核心特点无资源隔离整个集群资源被队列中的任务依次占用优点实现简单、无额外配置成本缺点资源利用率极低大任务会阻塞小任务。例如一个占用100%资源的大任务执行4小时后续提交的小任务只能等待4小时后才能执行适用场景仅适用于单用户、任务量少、无并发需求的测试环境企业生产环境中几乎不使用。2.2 Capacity Scheduler容量调度器容量调度器是Yarn的默认调度器也是中小企业最常用的调度器核心设计目标是支持多组织、多用户共享集群资源通过队列划分实现资源隔离和固定容量分配避免单个用户或任务耗尽集群资源。核心特点多队列机制为不同组织、不同业务分配专门的队列每个队列分配固定的集群资源如A队列占40%内存B队列占60%内存队列嵌套队列内部可垂直划分满足同一组织内不同成员、不同任务的资源共享需求调度逻辑队列内部采用FIFO策略队列之间按分配的容量比例调度空闲队列的资源可被其他队列临时借用需配置最大容量限制适用场景中小企业、多组织共享集群的场景支持任务优先级配置、资源限制能有效避免单个任务耗尽集群资源。2.3 Fair Scheduler公平调度器公平调度器的核心目标是“资源公平分配”不遵循提交顺序而是为所有运行中的应用动态分配公平的资源公平性可通过参数灵活配置适合任务并发量高、任务类型多样的大型集群。核心特点动态资源分配当集群中只有一个应用时该应用占用全部集群资源当有新应用提交时已运行的应用会释放部分资源最终所有应用公平共享资源多队列支持可在多个队列间实现公平调度每个队列可配置资源权重权重越高获得的资源越多优点资源利用率高适合多用户、多任务并发的场景能避免小任务被大任务长期阻塞适用场景大型企业、高并发任务集群尤其是任务类型多样有大任务、小任务、对资源公平性要求高的场景。三、Yarn默认调度器及修改方法3.1 默认调度器重点强调Yarn的默认调度器是Capacity Scheduler容量调度器其核心配置由yarn-site.xml文件中的yarn.resourcemanager.scheduler.class参数控制默认配置如下直接复制可用property nameyarn.resourcemanager.scheduler.class/name valueorg.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler/value /property3.2 调度器修改方法以切换为公平调度器为例实际生产中若需根据集群规模和业务需求将默认的容量调度器修改为公平调度器需完成以下3步配置基于Hadoop 3.x版本实操可直接参考步骤1修改yarn-site.xml配置在yarn-site.xml中添加/修改以下参数指定公平调度器并配置其专属配置文件路径property nameyarn.resourcemanager.scheduler.class/name valueorg.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler/value /property property nameyarn.scheduler.fair.allocation.file/name value/opt/installs/hadoop3.1.4/etc/hadoop/fair-scheduler.xml/value /property关键说明fair-scheduler.xml是公平调度器的核心队列配置文件需自行创建并根据实际业务配置队列资源、权重、调度策略等配置错误会导致Yarn启动失败。步骤2配置fair-scheduler.xml创建fair-scheduler.xml文件以下是通用示例配置可根据自身集群资源调整参数直接复制可快速搭建基础配置?xml version1.0? allocations !-- 单个队列中Application Master占用资源的最大比例,取值0-1 -- queueMaxAMShareDefault0.5/queueMaxAMShareDefault !-- 单个队列最大资源的默认值 -- queueMaxResourcesDefault4096mb,4vcores/queueMaxResourcesDefault !-- 自定义队列zs -- queue namezs minResources2048mb,2vcores/minResources maxResources4096mb,4vcores/maxResources maxRunningApps4/maxRunningApps maxAMShare0.5/maxAMShare weight1.0/weight schedulingPolicyfair/schedulingPolicy /queue !-- 任务队列分配策略 -- queuePlacementPolicy rule namespecified createfalse/ rule namedefault / /queuePlacementPolicy /allocations步骤3生效配置1. 将修改后的yarn-site.xml和fair-scheduler.xml分发到集群所有节点2. 重启Yarn集群或执行yarn rmadmin -refreshQueues刷新队列配置3. 提交任务时可通过-D mapreduce.job.queuename队列名指定队列验证调度器是否生效若未指定队列将按fair-scheduler.xml中的队列分配策略执行。四、三种调度器对比总结调度器类型核心逻辑优点缺点适用场景FIFO Scheduler先进先出无资源隔离实现简单、无配置成本资源利用率低小任务被大任务阻塞测试环境、单用户场景Capacity Scheduler多队列、固定容量队列内FIFO资源隔离、支持多组织共享配置简单资源分配不够灵活队列空闲资源借用有限制中小企业、多组织共享集群Fair Scheduler动态公平分配资源支持权重配置资源利用率高避免任务阻塞灵活度高配置复杂需维护专属配置文件大型企业、高并发任务集群五、注意事项生产环境中优先选择容量调度器默认或公平调度器严禁使用FIFO调度器避免出现资源浪费和任务阻塞问题修改调度器配置后必须重启Yarn集群或执行yarn rmadmin -refreshQueues刷新队列配置否则配置无法生效公平调度器的fair-scheduler.xml文件路径必须配置正确路径错误会直接导致Yarn集群启动失败多队列配置时需根据业务优先级合理分配各队列资源容量避免单个队列占用过多资源影响其他队列正常运行。结语掌握Yarn三种调度器的特点和适用场景是做好Hadoop集群资源管理的基础。实际应用中可根据集群规模、用户数量、任务类型选择合适的调度器或通过多队列配置实现更精细的资源管理提升集群运行效率。如果觉得本文有用欢迎点赞收藏后续会持续更新Hadoop实操干货