温馨提示×

HDFS在CentOS如何限速

小樊
37
2026-08-05 01:26:45
栏目: 智能运维

CentOS 上限制 HDFS 的速度,通常并不是直接“限制 HDFS 本身”,而是限制 网络带宽、磁盘 IO 或 YARN/MapReduce 的资源使用。下面按常见场景给你系统性的做法。


一、限制 HDFS 数据传输速度(最常用 ✅)

HDFS 没有“限速参数”,但可以通过 限制 DataNode 的网络带宽 来实现。

1️⃣ 限制 DataNode 网络带宽(推荐)

Hadoop 通过 流量整形(Traffic Shaping) 来限制 DataNode 之间的数据传输速度。

修改 hdfs-site.xml

<property>
  <name>dfs.datanode.balance.bandwidthPerSec</name>
  <value>10485760</value> <!-- 10 MB/s -->
</property>

单位:字节/秒

常见取值:

限速
5 MB/s 5242880
10 MB/s 10485760
20 MB/s 20971520

✅ 适用于:

  • Balancer
  • 副本复制
  • 跨节点数据迁移

⚠️ 需要重启 DataNode 生效


二、限制 HDFS 客户端写入速度(读写限速)

2️⃣ 限制 MapReduce / YARN 任务带宽

如果是 跑 MR / Spark 任务时 HDFS 占用带宽太高

限制 YARN 容器网络(Linux TC)

# 限制 eth0 网卡带宽为 50Mbps
tc qdisc add dev eth0 root tbf rate 50mbit burst 32kbit latency 400ms

取消限制:

tc qdisc del dev eth0 root

✅ 适合:

  • 批量任务
  • 多节点并发读写 HDFS

三、限制磁盘 IO(防止磁盘被打满)

3️⃣ 使用 ionice 限制 DataNode 磁盘 IO

ionice -c 2 -n 7 -p $(pgrep -f DataNode)
参数 说明
-c 2 最佳努力调度
-n 7 最低优先级

✅ 适合:

  • HDFS + 其他服务混部
  • 磁盘 IO 高导致系统卡顿

四、限制 Balancer 速度(单独场景)

如果你是在 执行 HDFS Balancer 时想限速

hdfs balancer -bandwidth 10485760

或者在 hdfs-site.xml 中设置(永久生效):

<property>
  <name>dfs.datanode.balance.bandwidthPerSec</name>
  <value>10485760</value>
</property>

五、限制 HDFS 副本复制速度

4️⃣ 限制副本同步带宽

<property>
  <name>dfs.datanode.balance.bandwidthPerSec</name>
  <value>10485760</value>
</property>

副本复制和 Balancer 共用该参数


六、CentOS 系统级限速(兜底方案)

5️⃣ 使用 firewalld + tc(高级)

适合 限制整个节点访问 HDFS 端口(50010、8020 等)的流量

tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 50mbit
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 50010 0xffff flowid 1:1

七、推荐组合方案(生产环境)

最常用 & 安全

hdfs-site.xml
dfs.datanode.balance.bandwidthPerSec = 10MB/s

任务高峰期

  • YARN 限制 container 数量
  • 使用 ionice + tc

单独跑 Balancer

hdfs balancer -bandwidth 10m

八、总结速查表

场景 方法
HDFS 数据复制慢 dfs.datanode.balance.bandwidthPerSec
Balancer 太快 hdfs balancer -bandwidth
磁盘 IO 高 ionice
网络带宽占用高 tc
任务并发太高 YARN 限制 container

如果你愿意,可以告诉我:

  • ✅ Hadoop 版本
  • ✅ 是 Balancer / 日常读写 / Spark 任务 哪种场景
  • ✅ 想限制 单节点还是集群

我可以给你一套 可直接用的配置方案

0