HDFS Balancer 和 Disk Balancer 有什么区别?
面试怎么回答
HDFS Balancer 解决 DataNode 之间的容量利用率不均,会跨节点移动 Block;Disk Balancer 解决单个 DataNode 内多块同类磁盘之间的不均,会在 Volume 间移动 Block。两者可能需要组合使用,但都会消耗 I/O 和带宽。运行前要确认容量余量与副本健康,设置限速,运行后按节点和磁盘两个层级验收。
先把这段讲顺;面试官追问时,再展开下面的原理和细节。
详细讲解
集群整体使用率很均衡,但某台 DataNode 的一块盘已经 95%,其他盘只有 40%。
这时继续跑 HDFS Balancer 往往没有效果,因为它关注的是节点之间,不是同一节点内部的磁盘之间。
HDFS Balancer 在 DataNode 之间移动 Block,解决节点利用率不均;Disk Balancer 在单个 DataNode 的同类 Volume 之间移动 Block,解决节点内磁盘冷热不均。
Balancer 看的是集群节点维度
新增 DataNode、节点容量差异或长期写入后,部分节点可能明显更满。Balancer 比较每个 DataNode 与集群平均利用率,按阈值选择高利用率和低利用率节点,在不破坏副本与放置策略的前提下跨节点搬迁 Block。
Disk Balancer 看的是节点磁盘维度
一个 DataNode 通常挂多块盘。历史扩盘、磁盘容量不同或卷选择策略会导致同节点内各 Volume 使用率失衡。Disk Balancer 先生成计划,再由目标 DataNode 在同类存储卷之间复制 Block,使各盘使用比例更接近。

两种不均衡可能同时存在
新增一批节点后,旧节点偏满,需要先做集群级 Balancer;某些旧节点内部又加了新盘,还需要 Disk Balancer。只跑其中一个,另一个维度可能仍然报警。判断时要同时看 DataNode 使用率和每个 Volume 的使用率。
在线搬迁也有资源成本
Block 移动会占用磁盘 I/O、网络带宽和 DataNode 处理能力,可能影响正常读写与计算任务。生产应设置带宽、并发和运行窗口,先评估待移动字节数,小步执行并观察延迟、坏盘和副本健康。
它们都不是容量规划替代品
如果全集群接近满载,Balancer 没有足够低利用率节点可接收数据;如果一块盘持续报错,Disk Balancer 也不能替代故障盘下线和数据恢复。均衡工具处理分布问题,不创造容量,也不修复硬件。
面试答题的落点
先给出粒度差异:节点间与节点内;再说触发场景、移动路径和资源影响;最后补充执行前检查副本健康、容量余量与限速,执行后分别验证节点和 Volume 利用率。