请描述 Yarn 中内存和 CPU 资源的分配配置方法,并结合任务特点说明调优策略。
考察说明
考查对 Yarn 资源模型和配置的理解,以及根据作业特性进行资源调优的实践能力。
回答思路
- 【回答框架 1】Yarn 资源模型以容器为单位,抽象为内存和虚拟核数。核心配置项包括 yarn.nodemanager.resource.memory-mb 和 yarn.nodemanager.resource.cpu-vcores,它们定义节点可分配资源总量;以及 yarn.scheduler.maximum-allocation-mb、yarn.scheduler.minimum-allocation-mb,用于控制单个容器申请的内存上下限,CPU 类似配置。
- 【回答框架 2】调度器按队列分配资源,常见如 Capacity Scheduler 和 Fair Scheduler,每个队列可设置容量、最大容量等,以限制不同租户或任务对资源的占用。此外,提交作业时可通过 mapreduce.map.memory.mb、mapreduce.reduce.memory.mb 等指定单个任务的内存需求,以及 mapreduce.map.cpu.vcores 指定 CPU 需求。
- 【关键点 1】Yarn 资源分配核心是容器,配置项包括节点总资源与单容器资源上限。
- 【关键点 2】队列配置可精细控制资源分配,常用 Capacity 或 Fair 调度器。
- 【关键点 3】调优需结合作业类型,如 IO 密集与计算密集型任务,设置合适的并行度和资源量。
- 【易错点 1】盲目增大容器内存可能导致集群资源浪费或排队严重。
- 【易错点 2】忽略 CPU 与内存的比例可能造成资源碎片或利用率不高。
- 【易错点 3】过度调优可能引起任务调度延迟,需结合监控和实际性能测试。