优化 Linux 上 HDFS(Hadoop Distributed File System)的配置,通常需要从硬件/OS 层、HDFS 参数层、集群架构层三个维度来做。下面按“可落地、常见、收益明显”的方式给你一个系统性的优化清单。
ext4 或 xfsmount -o noatime,nodiratime,data=writeback /dev/sdb /data1
deadlinenoop 或 noneecho deadline > /sys/block/sdb/queue/scheduler
sysctl vm.swappiness=1
net.core.somaxconn=32768
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_max_syn_backlog=8192
<property>
<name>dfs.datanode.handler.count</name>
<value>20</value>
</property>
<property>
<name>dfs.datanode.max.transfer.threads</name>
<value>8192</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>256m</value> <!-- 大文件场景 -->
</property>
小文件多 → 块小(64–128M)
大文件/离线计算 → 256M+
<property>
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>
<property>
<name>dfs.namenode.avoid.read.stale.datanode</name>
<value>true</value>
</property>
fsck 和 balancer<property>
<name>dfs.client.read.shortcircuit</name>
<value>true</value>
</property>
<property>
<name>dfs.domain.socket.path</name>
<value>/var/lib/hadoop-hdfs/dn_socket</value>
</property>
Short Circuit Read 可显著降低读延迟
export HADOOP_NAMENODE_OPTS="-Xms8g -Xmx8g -XX:+UseG1GC"
export HADOOP_DATANODE_OPTS="-Xms4g -Xmx4g -XX:+UseG1GC"
建议:
hdfs balancer -threshold 10
| 场景 | 建议 |
|---|---|
| 大量小文件 | 块 64–128M,合并写入 |
| 高并发读 | Short Circuit + 多 DN |
| 高吞吐写 | 大块 + 多磁盘 |
| 低延迟 | SSD + HA |
如果你愿意,可以告诉我:
我可以给你一套针对性配置模板。