在 Apache Flink 中,DefaultResourceCalculator 是一种资源计算策略,用于在资源调度过程中评估任务所需的资源量。以下是其核心特性和使用场景:
bin/flink run \
-t yarn-per-job \
-d \
-p 5 \
-Drest.flamegraph.enabled=true \
-Dyarn.application.queue=test \
-Djobmanager.memory.process.size=1024mb \
-Dtaskmanager.memory.process.size=4096mb \
-Dtaskmanager.numberOfTaskSlots=2 \
-c com.bigdata.flink.tuning.UvDemo \
/opt/module/flink-1.13.1/myjar/flink-tuning-1.0-SNAPSHOT.jar
1. 资源计算逻辑
该策略基于 Slot 数量 进行资源分配:
- 每个 Task 所需的资源由其并行度决定
- 资源需求公式:
Resource_{task} = \\text{并行度} \\times \\text{每个 Slot 的资源量}
2. 关键特性
- 单维度计算
仅考虑 Slot 数量,不涉及 CPU/内存的独立权重分配 - 简单高效
适用于大多数标准场景,降低调度复杂度 - 默认启用
在未显式配置时自动生效
3. 配置方式
在 flink-conf.yaml 中显式指定:
taskmanager.resource-calculator: org.apache.flink.runtime.resourcemanager.DefaultResourceCalculator
4. 适用场景
- 集群资源同质化(Slot 配置相同)
- 无特殊资源隔离需求
- 需快速部署的标准批处理/流处理任务
5. 对比其他策略
| 策略类型 | 资源维度 | 适用场景 |
|---|---|---|
DefaultResourceCalculator |
Slot 数量 | 常规作业 |
DominantResourceCalculator |
CPU/内存独立权重 | 异构资源环境(如 Kubernetes) |
提示 :在 Kubernetes/YARN 等资源异构环境中,建议切换为
DominantResourceCalculator以优化资源利用率。
通过合理选择资源计算策略,可显著提升集群资源利用效率和作业稳定性。