温馨提示×

debian Hadoop如何调优

小樊
46
2026-09-17 16:47:04
栏目: 智能运维

在 Debian 上部署和运行的 Hadoop(HDFS / YARN / MapReduce)调优,通常可以从系统层、HDFS、YARN、MapReduce、JVM、网络与磁盘几个维度来做。下面给你一份实用向调优清单,适合生产/准生产环境。


一、Debian 系统层调优(非常重要)

1. 文件描述符与进程数

Hadoop 对 fd 和线程数要求很高。

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

重新登录或重启生效。


2. 禁用 swap(强烈建议)

swap 会导致 JVM GC 停顿剧增。

swapoff -a

并注释 /etc/fstab 中的 swap 行。


3. 内核参数优化

# /etc/sysctl.conf
net.core.somaxconn = 4096
net.ipv4.tcp_tw_reuse = 1
vm.swappiness = 1
vm.overcommit_memory = 1
sysctl -p

4. 磁盘与文件系统

  • 使用 ext4 / xfs
  • 挂载参数建议:
defaults,noatime,nodiratime
  • DataNode 磁盘做 JBOD,不要 RAID5

二、HDFS 调优

1. hdfs-site.xml

<property>
  <name>dfs.replication</name>
  <value>3</value>
</property>

<property>
  <name>dfs.block.size</name>
  <value>134217728</value> <!-- 128MB -->
</property>

<property>
  <name>dfs.datanode.handler.count</name>
  <value>20</value>
</property>

<property>
  <name>dfs.namenode.handler.count</name>
  <value>40</value>
</property>

2. NameNode 内存

hadoop-env.sh:

export HADOOP_NAMENODE_OPTS="-Xmx8g -Xms8g"

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

1. yarn-site.xml

<property>
  <name>yarn.nodemanager.resource.memory-mb</name>
  <value>61440</value> <!-- 64G 机器示例 -->
</property>

<property>
  <name>yarn.nodemanager.resource.cpu-vcores</name>
  <value>16</value>
</property>

<property>
  <name>yarn.scheduler.maximum-allocation-mb</name>
  <value>61440</value>
</property>

<property>
  <name>yarn.scheduler.minimum-allocation-mb</name>
  <value>1024</value>
</property>

2. Container 内存控制

避免 OOM:

yarn.nodemanager.pmem-check-enabled=true
yarn.nodemanager.vmem-pmem-ratio=2.1

四、MapReduce 调优

mapred-site.xml

<property>
  <name>mapreduce.map.memory.mb</name>
  <value>2048</value>
</property>

<property>
  <name>mapreduce.reduce.memory.mb</name>
  <value>4096</value>
</property>

<property>
  <name>mapreduce.task.io.sort.mb</name>
  <value>512</value>
</property>

<property>
  <name>mapreduce.map.java.opts</name>
  <value>-Xmx1536m</value>
</property>

<property>
  <name>mapreduce.reduce.java.opts</name>
  <value>-Xmx3072m</value>
</property>

五、JVM & GC 调优

对 NameNode / ResourceManager:

-XX:+UseG1GC
-Xms8g -Xmx8g

对 Task:

-XX:+UseParallelGC

六、网络与吞吐优化

  • 千兆网卡 → 集群小规模
  • 生产建议 10GbE
  • 开启 Jumbo Frame(MTU 9000)

七、常见性能问题对照表

现象 可能原因
NameNode 卡顿 handler 数太小
Container OOM memory-mb 设置不合理
磁盘 IO 高 副本数 / 小文件过多
任务慢 map/reduce 内存不足
GC 长停顿 未使用 G1

八、小文件治理(常被忽略)

  • 使用 HAR / CombineFileInputFormat
  • HBase / Hive 分区合理化
  • 定期 hdfs dfs -count

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

  • Hadoop 版本(2.x / 3.x)
  • 机器配置(CPU / 内存 / 磁盘)
  • 主要用途(Hive / Spark / MapReduce)

我可以给你一份针对你集群的定制调优方案。

0 踩