2026-10-30 20:36:12
YARN的三种资源调度策略为容量调度器(Capacity Scheduler)、公平调度器(Fair Scheduler)和先进先出调度器(FIFO Scheduler),具体介绍如下:
容量调度器(Capacity Scheduler)
基本原理:将集群资源划分为多个队列,每个队列设定一定的资源容量,且支持子队列形成树形结构。用户提交的应用程序可选择提交到不同队列,调度器根据队列资源容量和应用程序需求分配资源。
特点:
多租户支持:不同用户或用户组使用独立队列,实现资源隔离。例如企业不同部门使用不同队列,避免相互干扰。
灵活性:可根据实际需求调整队列资源容量,适应业务变化。
层次性:队列支持层次结构,便于资源分配细化。例如大部门队列可包含多个子队列,分别用于不同项目。
适用场景:多用户、多租户环境,需对不同用户或业务进行资源隔离和管理的场景。
公平调度器(Fair Scheduler)
基本原理:核心思想是在多个应用程序间公平分配资源。新应用程序提交时,调度器为其分配资源,确保各应用程序在一段时间内获得大致相等的资源使用机会。空闲资源可被其他应用程序使用。
特点:
公平性:保证各应用程序公平获取资源,避免单一应用程序长时间占用大量资源。
动态调整:资源分配随应用程序运行情况动态调整。例如应用程序完成后,其资源会被释放并重新分配。
支持优先级:可为不同应用程序设置优先级,高优先级应用程序可更快获得资源。
适用场景:对公平性要求较高的场景,如多个用户共享集群资源且任务需及时处理的场景。
先进先出调度器(FIFO Scheduler)
基本原理:按照应用程序提交顺序依次调度。先提交的应用程序先获得资源并运行,后续应用程序需等待前序任务完成。
特点:
简单易懂:调度规则简单,易于理解和实现。
顺序执行:保证应用程序按提交顺序执行,避免资源抢占。
缺点:若先提交任务为大任务且运行时间长,后续小任务可能长时间等待,导致资源利用率低。
适用场景:对任务执行顺序有严格要求且任务规模相对均匀的场景。