温馨提示×

linux hadoop怎么调优性能

小樊
42
2026-09-22 19:35:59
栏目: 智能运维

在 Linux 上部署和调优 Hadoop(HDFS / YARN / MapReduce)性能,通常从 操作系统、HDFS、YARN、MapReduce、网络与磁盘 几个层面入手。下面给你一套实用向的调优清单,偏生产环境。


一、Linux 系统层调优(基础但非常重要)

1. 文件描述符 & 进程数

Hadoop 会打开大量文件。

# /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536

2. 禁用 swap(强烈建议)

swap 会导致 JVM GC 卡顿。

swapoff -a
# 永久:注释 /etc/fstab 中 swap 行

3. 磁盘调度策略

对 HDD 用 deadline,SSD 用 noop

echo deadline > /sys/block/sda/queue/scheduler

4. 文件系统

  • 推荐 ext4 / xfs
  • 挂载参数:
defaults,noatime,nodiratime

5. 网络参数

net.core.somaxconn = 4096
net.ipv4.tcp_tw_reuse = 1
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

二、HDFS 性能调优

1. 块大小(block size)

  • 大文件:128MB → 256MB / 512MB
  • 小文件多:考虑 HBase / Hive 小文件合并
<property>
  <name>dfs.blocksize</name>
  <value>268435456</value>
</property>

2. NameNode 内存

NameNode 内存 ≈ 文件数 × 150–300 Byte

export HADOOP_NAMENODE_OPTS="-Xmx16g"

3. 副本数

  • 默认 3
  • 非核心数据可降为 2
dfs.replication=2

4. 客户端写入优化

dfs.client.write.packet.size=65536
dfs.datanode.max.transfer.threads=8192

三、YARN 资源调度调优(最关键)

1. NodeManager 资源

yarn.nodemanager.resource.memory-mb=64GB
yarn.nodemanager.resource.cpu-vcores=16

2. Container 最小/最大

yarn.scheduler.minimum-allocation-mb=1024
yarn.scheduler.maximum-allocation-mb=32768

3. 调度器选择

  • 默认:Capacity
  • 多租户:Fair Scheduler

4. JVM 重用(减少启动开销)

mapreduce.job.jvm.numtasks=-1

四、MapReduce 调优

1. Map / Reduce 数量

mapreduce.job.maps=节点数 × cpu核数
mapreduce.job.reduces=0.95 × reducetask槽位

2. 内存设置(最易错)

mapreduce.map.memory.mb=4096
mapreduce.reduce.memory.mb=8192
mapreduce.map.java.opts=-Xmx3072m
mapreduce.reduce.java.opts=-Xmx6144m

3. 合并与压缩

mapreduce.map.output.compress=true
mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec

五、磁盘 & IO 调优

1. 多磁盘

dfs.datanode.data.dir=/data1/dfs,/data2/dfs,/data3/dfs

2. IO 线程

dfs.datanode.handler.count=20
mapreduce.task.io.sort.factor=64

六、常见性能问题排查

现象 可能原因
Map 慢 小文件多 / 数据倾斜
Reduce 慢 Shuffle 大 / 内存不足
整体卡 GC / swap / 磁盘 IO
任务失败 Container 内存超了

七、推荐监控工具

  • Hadoop Web UI
  • Prometheus + Grafana
  • Ganglia
  • jstat -gc

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

  • Hadoop 版本(2.x / 3.x)
  • 集群规模(几台、什么配置)
  • 主要跑什么(Hive / Spark / MapReduce)

我可以直接给你一份可复制的调优配置。

0 踩