在 Hadoop YARN 中,资源抢占(Resource Preemption)是调度器(如 Capacity Scheduler 或 Fair Scheduler)的一项高级特性。它允许集群在资源紧张时,从那些超额使用资源的队列或任务中强行收回资源,并分配给资源不足且拥有更高优先级(或未达到其保证容量)的队列。 为了让你更容易理解,我们先解答“为什么需要资源抢占”,再解释“它是如何工作的”。 --- 一、 为什么需要资源抢占?(Why?) 资源抢占主要是为了解决“资源弹性共享”与“资源最低保证(SLA)”之间的矛盾。 场景举例: 假设你的 YARN 集群总资源是 100G 内存。有两个部门(队列): 队列 A(核心业务): 保证容量为 50G。 队列 B(边缘业务): 保证容量为 50G。 没有资源抢占的情况: 1. 晚上 8 点,核心业务 A 闲置没有任务,边缘业务 B 提交了大量计算任务。 2. YARN 为了不浪费集群资源(弹性共享机制),允许队列 B 借用队列 A 的闲置资源。于是,队列 B 占用了 100G 的全部资源。 3. 晚上 9 点,核心业务 A 突然爆发,...