温馨提示×

debian hadoop怎样调优

小樊
49
2026-09-26 17:23:38
栏目: 智能运维

在 Debian 上部署和调优 Hadoop,通常从系统层、HDFS、YARN、MapReduce、JVM、网络与磁盘几个维度入手。下面给你一份实用向的 Hadoop 调优清单(适用于 Debian 10/11/12 + Hadoop 3.x)。


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

1. 内核参数(/etc/sysctl.conf)

# 文件句柄
fs.file-max = 1000000

# TCP 优化
net.core.somaxconn = 4096
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_tw_reuse = 1

# 虚拟内存(Hadoop 建议)
vm.swappiness = 10
vm.overcommit_memory = 1
sysctl -p

2. 文件描述符 & 用户限制

/etc/security/limits.conf

hadoop soft nofile 1000000
hadoop hard nofile 1000000
hadoop soft nproc 65535
hadoop hard nproc 65535

3. 关闭无用服务

systemctl disable --now bluetooth
systemctl disable --now cups

4. 磁盘调度(SSD 推荐 none / mq-deadline)

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

二、HDFS 调优

1. hdfs-site.xml

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

<property>
  <name>dfs.blocksize</name>
  <value>268435456</value> <!-- 256MB -->
</property>

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

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

2. DataNode 磁盘

  • 多磁盘挂载
  • dfs.datanode.data.dir 使用逗号分隔多目录
<property>
  <name>dfs.datanode.data.dir</name>
  <value>/data1/dfs,/data2/dfs,/data3/dfs</value>
</property>

三、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>57344</value>
</property>

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

2. 使用 Capacity Scheduler

yarn.resourcemanager.scheduler.class=
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

四、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>-Xmx1600m</value>
</property>

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

五、JVM & GC 调优

hadoop-env.sh

export HADOOP_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=200"
export HADOOP_NAMENODE_OPTS="-Xmx8g"
export HADOOP_DATANODE_OPTS="-Xmx4g"

六、网络 & 安全

  • 使用 千兆/万兆网卡
  • 关闭防火墙或只放行必要端口
ufw allow 8020
ufw allow 9000
ufw allow 50010

七、常见性能问题排查

# 查看 YARN 资源
yarn node -list

# 查看 HDFS 状态
hdfs dfsadmin -report

# GC 问题
jstat -gcutil <pid> 1000

八、调优原则(很重要)

  1. 先监控再调优
  2. 不要盲目加内存
  3. 小文件问题 >> 参数问题
  4. 集群规模越大,调度参数越重要

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

  • Hadoop 版本(2.x / 3.x)
  • 集群规模(几台、什么配置)
  • 主要用途(离线 / 实时 / Spark on YARN)

我可以给你一套针对你环境的参数模板。

0 踩