温馨提示×

linux hadoop怎样调优

小樊
49
2026-10-19 03:56:31
栏目: 智能运维

在 Linux 上运行 Hadoop(通常是 HDFS + YARN + MapReduce/Spark)时,调优分为操作系统层、HDFS 层、YARN 层、MapReduce/计算层以及硬件与架构层。下面按“由下而上”的方式给你一个较系统的调优指南。


一、Linux 系统层调优(基础)

1. 文件描述符与进程数

Hadoop 会打开大量文件和网络连接。

# 查看
ulimit -n
ulimit -u

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

2. 禁用 swap(非常重要)

Swap 会严重影响 HDFS / YARN 性能。

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

3. 文件系统与挂载参数

  • 推荐使用 ext4 / xfs
  • 挂载选项:
mount -o noatime,nodiratime /dev/sdb /data

4. 网络参数优化

# /etc/sysctl.conf
net.core.somaxconn = 4096
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_syn_backlog = 8192
sysctl -p

5. 磁盘 I/O 调度

  • HDD:deadline / mq-deadline
  • SSD:none / noop
echo mq-deadline > /sys/block/sda/queue/scheduler

二、HDFS 调优

1. 块大小(block size)

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

2. NameNode 内存

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

export HADOOP_NAMENODE_OPTS="-Xmx12g"

3. DataNode 线程与带宽

dfs.datanode.max.transfer.threads=8192
dfs.datanode.balance.bandwidthPerSec=50M

4. 副本数

  • 默认 3
  • 冷数据可降为 2

三、YARN 调优(资源调度核心)

1. NodeManager 资源

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

2. Container 最小/最大

yarn.scheduler.minimum-allocation-mb=1G
yarn.scheduler.maximum-allocation-mb=32G

3. JVM 重用(MapReduce)

mapreduce.job.jvm.numtasks=-1

四、MapReduce 调优

1. Map / Reduce 数量

mapreduce.input.fileinputformat.split.minsize
mapreduce.job.maps
mapreduce.job.reduces

经验:

  • reduces ≈ 0.95 × nodes × cores

2. 内存设置

mapreduce.map.memory.mb=4G
mapreduce.reduce.memory.mb=8G
mapreduce.map.java.opts=-Xmx3G

3. 合并与压缩

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

五、Spark on YARN 调优(如适用)

--executor-memory 8G
--executor-cores 4
--num-executors 10
spark.memory.fraction=0.6

六、监控与定位瓶颈

  • NameNode UI:50070
  • ResourceManager UI:8088
  • 常用命令:
hdfs dfsadmin -report
yarn node -list
top / iostat -x 1

七、典型调优顺序(建议)

  1. Linux(文件数、swap、磁盘)
  2. HDFS(块大小、NN 内存)
  3. YARN(资源分配)
  4. 计算框架(MR / Spark)
  5. 数据本身(小文件、倾斜)

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

  • Hadoop 版本(2.x / 3.x)
  • 集群规模(几台、什么配置)
  • 主要跑 MR 还是 Spark
  • 瓶颈现象(慢、OOM、磁盘满)

我可以直接给你一套可落地的配置示例。

0 踩