hdfs在centos上的性能调优
导读:HDFS在CentOS上的性能调优指南 一 操作系统与内核优化 文件句柄与进程限制 提升单进程可打开文件数,编辑 /etc/security/limits.conf: 示例:* soft nofile 655360、* hard no...
HDFS在CentOS上的性能调优指南
一 操作系统与内核优化
- 文件句柄与进程限制
- 提升单进程可打开文件数,编辑 /etc/security/limits.conf:
- 示例:
* soft nofile 655360、* hard nofile 655360
- 示例:
- 在 /etc/pam.d/login 增加:
session required pam_limits.so - 使当前会话生效:
ulimit -n 65535
- 提升单进程可打开文件数,编辑 /etc/security/limits.conf:
- 关键内核参数(/etc/sysctl.conf)
- 示例:
fs.file-max = 131072net.core.somaxconn = 65535net.ipv4.tcp_tw_reuse = 1net.ipv4.ip_local_port_range = 1024 65535
- 应用:
sysctl -p
- 示例:
- 虚拟内存与透明大页
- 关闭透明大页(THP):
- 立即生效:
echo never > /sys/kernel/mm/transparent_hugepage/enabled - 开机持久:在 /etc/rc.d/rc.local 中加入上述命令
- 立即生效:
- 关闭透明大页(THP):
- 文件系统挂载
- 为数据盘挂载选项增加 noatime,nodiratime,降低元数据写开销。
二 HDFS核心参数调优
- 块大小与副本数
- 大文件顺序读写:建议 dfs.blocksize=256M;中小文件或混合负载:128M
- 副本数:常规 dfs.replication=3(可靠性与读性能平衡)
- 并发与线程
- 提高 RPC 处理能力:
dfs.namenode.handler.count(如:20–30,视 NN 内存与 CPU 调整) - 提升 DataNode 数据传输并发:
dfs.datanode.handler.count(如:30 起)
- 提高 RPC 处理能力:
- 短路读与本地性
- 启用短路读:
dfs.client.read.shortcircuit=true(需确保短路本地库与权限配置正确)
- 启用短路读:
- 回收站
- 误删防护:
fs.trash.interval=60、fs.trash.checkpoint.interval=10
- 误删防护:
- 内存与JVM
- 在 hadoop-env.sh 中为 NameNode/DataNode 设置堆大小(示例:
-Xmx4G -Xms2G,结合节点内存与GC策略调整)
- 在 hadoop-env.sh 中为 NameNode/DataNode 设置堆大小(示例:
- 小文件与压缩
- 避免小文件(合并/归档),提升 数据本地性
- 启用中间数据压缩(示例):
mapreduce.map.output.compress=truemapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec
三 存储与网络硬件建议
- 存储介质
- SSD/NVMe 显著提升 DataNode I/O;NameNode 元数据与热点数据也可受益于 SSD
- 网络
- 建议使用 10Gbps 及以上网络,降低副本同步与客户端访问的网络瓶颈
- 节点与目录
- 横向扩容 DataNode 提升并行度与容量
- DataNode 多目录(多磁盘)分散 I/O 压力,避免单盘热点
四 压测与监控闭环
- 基准测试
- 使用 TestDFSIO 评估读写吞吐:
- 写:
hadoop jar /path/to/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -write -nrFiles 10 -fileSize 128MB - 读:
hadoop jar /path/to/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -read -nrFiles 10 -fileSize 128MB
- 写:
- 使用 TestDFSIO 评估读写吞吐:
- 监控与验证
- 进程与连通:
jps检查 NameNode/DataNode;核对 fs.defaultFS 等核心配置 - 持续观察 延迟、吞吐、CPU/内存、I/O 等指标,结合压测结果迭代参数
- 进程与连通:
五 快速参考配置清单
- 操作系统
- limits.conf:
* soft/hard nofile 655360 - sysctl:
fs.file-max=131072、net.core.somaxconn=65535、net.ipv4.tcp_tw_reuse=1、net.ipv4.ip_local_port_range=1024 65535 - THP:禁用;挂载:
noatime,nodiratime
- limits.conf:
- HDFS
dfs.blocksize=256M(或 128M)dfs.replication=3dfs.namenode.handler.count=20–30dfs.datanode.handler.count=30dfs.client.read.shortcircuit=truefs.trash.interval=60、fs.trash.checkpoint.interval=10- 压缩:
mapreduce.map.output.compress=true、SnappyCodec
- 环境
HADOOP_NAMENODE_OPTS="-Xmx4G -Xms2G"、HDFS_DATANODE_OPTS="-Xmx4G -Xms2G"- 硬件:SSD、10Gbps 网络、DataNode 多目录/多盘
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: hdfs在centos上的性能调优
本文地址: https://pptw.com/jishu/763464.html
