Ubuntu HDFS如何进行负载均衡
导读:Ubuntu上HDFS负载均衡实操指南 一 核心概念与适用场景 节点间均衡 Balancer:用于让各 DataNode 的存储使用率趋近一致,默认阈值为10%(可调整)。适合新增/下线节点、长期运行后数据倾斜等场景。 磁盘间均衡 Dis...
Ubuntu上HDFS负载均衡实操指南
一 核心概念与适用场景
- 节点间均衡 Balancer:用于让各 DataNode 的存储使用率趋近一致,默认阈值为10%(可调整)。适合新增/下线节点、长期运行后数据倾斜等场景。
- 磁盘间均衡 Disk Balancer:用于同一 DataNode 内部多块磁盘之间的数据分布均衡,适合新挂载磁盘、写入策略导致“热点盘”等场景。
- NameNode 访问入口均衡:对客户端访问 NameNode RPC(8020)/HTTP(9870) 的负载分发,通常通过 HAProxy/Keepalived 或客户端多地址配置实现。
- 建议先完成节点间均衡,再做磁盘间均衡,避免互相干扰。
二 节点间均衡 Balancer 步骤
- 1)检查集群概况
- 查看各节点容量与使用:
- hdfs dfsadmin -report
- 查看各节点容量与使用:
- 2)设置均衡带宽(避免影响业务)
- 动态设置(单位:字节/秒):
- hdfs dfsadmin -setBalancerBandwidth 20971520 # 示例:20 MB/s
- 动态设置(单位:字节/秒):
- 3)执行均衡(建议使用专用空闲机器启动,而非 NameNode)
- 默认策略(datanode):
- hdfs balancer -threshold 10
- 指定带宽与阈值:
- hdfs balancer -bandwidth 20971520 -threshold 5
- 常用选项:
- -policy datanode|blockpool(按节点或块池均衡)
- -exclude/-include(排除/仅包含指定节点)
- -blockpools(仅对指定块池运行)
- 默认策略(datanode):
- 4)查看状态与停止
- 查看状态:hdfs balancer -status
- 停止:stop-balancer.sh(或使用脚本的停止参数)
- 5)何时认为“平衡”
- 当各 DataNode 使用率与集群平均使用率的偏差小于 -threshold 设定值时,即视为达到平衡。
三 磁盘间均衡 Disk Balancer 步骤
- 1)启用磁盘均衡(在 hdfs-site.xml 的 DataNode 上)
- dfs.disk.balancer.enabled true
- 2)常用调参(可选,hdfs-site.xml 或同名配置前缀)
- dfs.disk.balancer.max.disk.throughputInMBperSec(默认10 MB/s)
- dfs.disk.balancer.plan.threshold.percent(默认10%)
- dfs.disk.balancer.block.tolerance.percent(默认10%)
- 3)执行流程(针对某台 DataNode,例如主机名为 hadoop103)
- 生成计划:hdfs diskbalancer -plan hadoop103
- 执行计划:hdfs diskbalancer -execute hadoop103.plan.json
- 查看进度:hdfs diskbalancer -query hadoop103
- 取消任务:hdfs diskbalancer -cancel hadoop103.plan.json
- 4)说明
- Disk Balancer 以 DataNode 为单位执行,不会跨节点搬移数据;适合单节点多盘倾斜问题。
四 NameNode 访问入口均衡
- 方案A:客户端多地址(简单、无单点)
- 在 core-site.xml 配置多个 NameNode RPC 地址:
- fs.defaultFS hdfs://nn1:8020,hdfs://nn2:8020
- 客户端会按轮询/故障切换策略选择可用 NameNode。
- 在 core-site.xml 配置多个 NameNode RPC 地址:
- 方案B:HAProxy/Keepalived(TCP 层负载均衡)
- 安装:sudo apt-get install haproxy
- 示例 /etc/haproxy/haproxy.cfg(RPC 8020):
- frontend hdfs_rpc bind *:8020
default_backend hdfs_namenodes - backend hdfs_namenodes
balance roundrobin
server nn1 192.168.1.11:8020 check
server nn2 192.168.1.12:8020 check
- frontend hdfs_rpc bind *:8020
- 启动:sudo systemctl start haproxy & & sudo systemctl enable haproxy
- 客户端将 fs.defaultFS 指向 HAProxy 地址:8020。
- 提示:HTTP 管理界面(9870)也可类似做 7 层或 4 层转发,便于浏览器/监控访问。
五 参数建议与注意事项
- 带宽与窗口期
- 业务高峰期将 Balancer 带宽调低(如10–50 MB/s),低峰期再调高;避免影响线上任务。
- 阈值选择
- 节点数多、容量大时可适度放宽阈值(如10–15%);追求更均匀可降至5%,但耗时更长。
- 运行位置
- 尽量在空闲节点启动 Balancer,避免与 NameNode 争抢资源。
- 多目录与磁盘策略
- 多盘写入策略可能导致新盘“热点”,配置 dfs.datanode.data.dir 多目录并启用 Disk Balancer 可缓解。
- 监控与回滚
- 通过 hdfs dfsadmin -report、NameNode Web UI、日志与监控平台观察迁移速率、I/O、任务成功率;必要时随时停止均衡。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu HDFS如何进行负载均衡
本文地址: https://pptw.com/jishu/753073.html
