温馨提示×

debian跑hadoop怎优化

小樊
41
2026-10-05 11:38:16
栏目: 智能运维

在 Debian 上跑 Hadoop(通常是 On-Premise 伪分布式 / 完全分布式),优化可以从系统层 → JVM层 → Hadoop组件层 → 运维层逐步做。下面按实战优先级给你一份较完整的优化清单。


一、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
net.ipv4.tcp_fin_timeout = 30

# 虚拟内存(避免 OOM kill)
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. 磁盘 & 文件系统

  • 使用 ext4 / xfs
  • 挂载参数:
defaults,noatime,nodiratime,data=writeback
  • 多磁盘 JBOD(不要 RAID5)
  • 每个磁盘一个 dfs.datanode.data.dir

4. 关闭无关服务

systemctl disable bluetooth
systemctl disable cups

二、JVM & Hadoop 启动优化

1. JVM 参数(hadoop-env.sh)

export HADOOP_OPTS="-Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
  • NameNode / ResourceManager:GC 用 G1
  • 避免 JVM 频繁 Full GC

2. 开启 Native Library

hadoop checknative

确保:

  • snappy
  • zlib
  • openssl

三、HDFS 优化

hdfs-site.xml

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

<property>
  <name>dfs.blocksize</name>
  <value>256m</value>
</property>

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

<property>
  <name>dfs.datanode.max.transfer.threads</name>
  <value>8192</value>
</property>

小文件优化

  • 使用 HAR / HBase / Hudi
  • 合并小文件(CombineFileInputFormat)

四、YARN / MapReduce 优化

yarn-site.xml

<property>
  <name>yarn.nodemanager.resource.memory-mb</name>
  <value>61440</value>
</property>

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

<property>
  <name>yarn.nodemanager.vmem-pmem-ratio</name>
  <value>2.1</value>
</property>

mapred-site.xml

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

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

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

五、网络 & 拓扑优化

  • 千兆 → 万兆网卡
  • 配置 net.topology.script.file.name
  • 同机架优先调度

六、监控 & 调优手段

  • Metrics:JMX + Prometheus + Grafana
  • 日志:
    • NameNode RPC 延迟
    • GC 日志
  • 工具:
hdfs dfsadmin -report
yarn node -list

七、常见坑(Debian 特有)

  1. OpenJDK 版本
    • 推荐:OpenJDK 8 / 11(Hadoop 3.x)
  2. hostname 解析
    • /etc/hosts 必须正确
  3. systemd 限制
    • 修改 LimitNOFILE

八、如果你愿意,我可以:

  • 按你的 机器配置(CPU/内存/磁盘) 给一套参数
  • 区分 伪分布式 / 生产集群
  • 针对 Spark on Hadoop 做专项优化

你可以直接说:

“我有 3 台 Debian,32G 内存,想跑 Hadoop+Spark”

0 踩