温馨提示×

centos怎么限制hdfs带宽

小樊
51
2026-10-09 08:28:13
栏目: 智能运维

在 CentOS 上“限制 HDFS 带宽”通常不是直接靠 CentOS 系统层面完成,而是 HDFS / Hadoop 自身机制 + 必要时配合系统工具。下面按常见场景说明。


一、HDFS 自带的带宽限制(推荐)

1. 限制 DataNode 之间数据平衡/复制带宽

HDFS 支持限制 后台数据传输(副本复制、Balancer、Decommission)。

核心参数

在 hdfs-site.xml 中:

<property>
  <name>dfs.datanode.balance.bandwidthPerSec</name>
  <value>10485760</value> <!-- 10 MB/s -->
</property>
  • 单位:字节/秒
  • 默认值:1,048,576(1 MB/s)
  • 影响:Balancer、副本复制、节点下线

动态修改(无需重启)

hdfs dfsadmin -setBalancerBandwidth 10485760

2. 限制 MapReduce / YARN 任务写 HDFS 的带宽

HDFS 不限制客户端写带宽,但可以通过 YARN 资源控制间接限制。

限制容器网络(间接)

  • 使用 YARN + Linux CGroups
  • 限制 CPU / IO,从而减少 HDFS 压力

二、使用 CentOS 系统工具限制 HDFS 端口带宽(不推荐但可用)

⚠️ 注意:HDFS 使用 随机端口 + 多连接,系统级限速较麻烦。

方案 1:使用 tc(Traffic Control)

仅适合限制 DataNode 端口

示例:限制 DataNode 端口 50010

# 假设网卡 eth0
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit

tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
  match ip dport 50010 0xffff flowid 1:1
  • 50010:DataNode 数据传输端口
  • 50020:IPC(一般不建议限速)

方案 2:使用 wondershaper

适合临时测试:

yum install wondershaper
wondershaper eth0 100000 100000  # 下行/上行 100Mbps

三、限制 HDFS 客户端读写带宽(应用层)

如果是 自己写程序访问 HDFS:

  • 控制并发线程数
  • 控制每次读写的 buffer size
  • 在应用层做限流(如 Guava RateLimiter)

四、常见使用建议

场景 推荐方式
Balancer 太占带宽 dfs.datanode.balance.bandwidthPerSec
集群间数据迁移 distcp + 限流参数
生产环境稳定 HDFS 参数优先
临时限速 tc

五、示例:限制 Balancer 到 20MB/s

hdfs dfsadmin -setBalancerBandwidth 20971520

如果你能说明:

  • 是 DataNode 间 还是 客户端读写
  • 是否使用 CDH / HDP / 原生 Hadoop
  • CentOS 版本

我可以给你更精确的配置示例。

0 踩