Region Balancer
Region Balancer 是 Autopilot 的一个调度策略,用于自动平衡 Datanode 之间的 Region 写入负载。当某些 Datanode 持续处于高负载状态时,Region Balancer 会选择合适的 Region,并提交 Region Migration 操作,将 Region 迁移到负载较低的 Datanode。
Region Balancer 运行在 Metasrv 中,并依赖 Autopilot 共享的运行时和集群统计信息。关于 Autopilot 的整体说明,请参考 Autopilot。
什么时候使用 Region Balancer
Region Balancer 适合以下场景:
- 部分 Datanode 的写入负载长期高于其他 Datanode;
- 希望减少手动分析热点节点和手动执行 Region Migration 的运维成本。
限制
Region Balancer 要求可调度的 Region 数量大于活跃 Datanode 数量。如果 Region 数量不多于活跃 Datanode 数量,即使迁移 Region,也无法让 Datanode 之间的负载变得均衡。
配置
Region Balancer 依赖 Autopilot 运行时和集群统计信息。下面的示例同时包含共享配置和 Region Balancer 配置:
[[plugins]]
[plugins.autopilot]
tick_interval = "45s"
[[plugins]]
[plugins.cluster_stat]
sampling_window = "45s"
max_history_windows = 5
ewma_alpha = 0.2
[[plugins]]
[plugins.region_balancer]
acceptable_load_ratio = 0.12
min_load_threshold = "4MB"
region_migration_cooldown_period = "1h"
window_stability_threshold = 2
其中:
plugins.autopilot控制 Autopilot 的调度周期;plugins.cluster_stat控制 Datanode 和 Region 写入统计信息的采样与平滑;plugins.region_balancer控制 Region Balancer 的触发条件、冷却时间和迁移数量。
共享配置项的详细说明请参考 Autopilot 配置。
核心配置项
| 配置项 | 默认值 | 说明 |
|---|---|---|
acceptable_load_ratio | 0.12 | Datanode 写负载超过平均负载的比例阈值。例如默认值 0.12 表示当某个 Datanode 的写负载超过平均负载 12% 以上时,可能被视为高负载 Datanode。 |
min_load_threshold | "4MB" | 触发平衡的最小 Datanode 写负载。该配置表示写入速率,单位为 bytes/s;配置值使用 bytes 表示,例如 "4MB" 表示 4MB/s。低于该阈值时,即使负载不均衡,也不会触发迁移,避免低流量场景下频繁调度。 |
region_migration_cooldown_period | "1h" | Region 迁移后的冷却时间。在冷却时间内,同一个 Region 不会再次被迁移,避免频繁迁移。 |
window_stability_threshold | 2 | 连续多少个历史统计窗口都满足高负载条件后,才会触发迁移。较大的值可以减少短期波动造成的误触发。 |
高级配置项
以下配置通常不需要调整,建议仅在明确了解负载特征和调度行为后修改。
| 配置项 |
|---|