请描述在 Apache Hadoop YARN 中,如何通过配置不同的调度器(如 FIFO、容量调度器、公平调度器)及其队列策略来实现集群资源的有效管理?
考察说明
考查对 YARN 资源调度器及其队列策略的理解与应用能力。
回答思路
- 【回答框架 1】YARN 默认支持三种调度器:FIFO(先进先出)、容量调度器(Capacity Scheduler)和公平调度器(Fair Scheduler)。FIFO 按提交顺序执行,实现简单但可能产生队头阻塞,适合单用户或小规模集群。
- 【回答框架 2】容量调度器通过配置文件(如 capacity-scheduler.xml)定义多个队列,每个队列分配一定比例的资源,支持层级队列和弹性伸缩。管理员可设置队列的容量、最大容量、用户限制等参数,例如设置 default 队列容量为 40%,其他队列各 30%。
- 【回答框架 3】公平调度器(公平调度器)采用资源公平共享机制,自动在运行的任务之间平均分配资源,支持权重(weight)调整、抢占和延迟调度。配置在 fair-scheduler.xml 中,可以定义队列的权重和最小资源。
- 【回答框架 4】实际配置时,需要修改 yarn-site.xml 中的 yarn.resourcemanager.scheduler.class 属性指向对应的调度器类,然后根据调度器类型配置相应的 XML 文件,并重启 ResourceManager 或使用动态刷新命令使配置生效。
- 【关键点 1】YARN 调度器主要有 FIFO、容量、公平三种,默认是容量调度器。
- 【关键点 2】容量调度器基于队列容量划分资源,适合多租户场景。
- 【关键点 3】公平调度器平均分配资源,支持抢占和权重调整。
- 【关键点 4】配置时需修改 yarn-site.xml 指定调度器类,并编辑对应的 XML 配置文件。
- 【易错点 1】混淆调度器类型,错误地认为 FIFO 支持多队列动态调整。
- 【易错点 2】忽略队列最小容量和最大容量的设置导致资源配置不符合预期。
- 【易错点 3】未区分容量调度器与公平调度器的抢占机制差异。