在 Debian 上跑 Hadoop(通常是 On-Premise 伪分布式 / 完全分布式),优化可以从系统层 → JVM层 → Hadoop组件层 → 运维层逐步做。下面按实战优先级给你一份较完整的优化清单。
# 文件句柄
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
/etc/security/limits.conf
hadoop soft nofile 1000000
hadoop hard nofile 1000000
hadoop soft nproc 65535
hadoop hard nproc 65535
defaults,noatime,nodiratime,data=writeback
dfs.datanode.data.dirsystemctl disable bluetooth
systemctl disable cups
export HADOOP_OPTS="-Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
hadoop checknative
确保:
<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>
<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>
<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.namehdfs dfsadmin -report
yarn node -list
/etc/hosts 必须正确LimitNOFILE你可以直接说:
“我有 3 台 Debian,32G 内存,想跑 Hadoop+Spark”