在 CentOS 上 HDFS 启动慢 是比较常见的问题,通常不是 HDFS 本身“慢”,而是环境或配置导致。下面按最常见原因 → 排查方式 → 解决办法给你梳理一下。
现象
Loading edits / Saving namespace原因
解决
hdfs dfsadmin -safemode enter
hdfs dfsadmin -saveNamespace
或配置 SecondaryNameNode / Checkpoint 更频繁
现象
Resolving hostnamegetHostName 耗时原因
/etc/hosts 配置不完整解决(强烈推荐)
# /etc/hosts
192.168.1.10 namenode
192.168.1.11 datanode1
并禁用 IPv6:
# /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
现象
原因
/dev/random 阻塞(熵不足)解决
修改 hadoop-env.sh:
export HADOOP_OPTS="-Djava.security.egd=file:/dev/./urandom"
现象
原因
解决
<property>
<name>dfs.datanode.scan.period.hours</name>
<value>24</value>
</property>
mount -o remount,noatime /
虽然不会直接“慢”,但可能导致:
getenforce
systemctl stop firewalld
free -m
如果有 swap 被用:
sysctl vm.swappiness=10
# 1. 看启动卡在哪
tail -f $HADOOP_HOME/logs/hadoop-*-namenode-*.log
# 2. 看 DNS
hostname -f
# 3. 看 Java 启动时间
time hdfs version
# 4. 看熵
cat /proc/sys/kernel/random/entropy_avail
CentOS 上 HDFS 启动慢,90% 是 DNS + /dev/random + EditLog 三大元凶
如果你愿意,可以把:
贴出来,我可以直接帮你精准定位是哪一条。