在 CentOS 上 HDFS 启动慢 是比较常见的问题,通常不是单一原因,而是多个因素叠加。下面按最常见 → 较少见的顺序给你梳理原因和优化建议。
NameNode 启动时要做这些事:
fsimageeditlog✅ 优化:
hdfs dfsadmin -safemode wait
hdfs dfsadmin -saveNamespace
并确认 SecondaryNameNode / Standby NN 正常运行
NameNode 要等 所有/多数 DataNode 上报块信息 才退出安全模式。
可能原因:
✅ 检查:
netstat -antp | grep 50010
journalctl -u hadoop-hdfs-datanode
HDFS 默认:
如果:
就会一直卡在安全模式
✅ 查看:
hdfs dfsadmin -safemode get
hdfs fsck / -list-corruptfiles
Hadoop 极度依赖 hostname 解析
问题表现:
Retrying connectunknown host✅ 必须做:
/etc/hosts
127.0.0.1 localhost
192.168.1.10 master
192.168.1.11 slave1
并确认:
hostname -f
能立刻返回,不卡
CentOS 默认:
会导致:
✅ 建议(测试环境):
setenforce 0
systemctl stop firewalld
Hadoop 启动依赖 /dev/random
如果熵不够:
✅ 强烈建议:
vim $JAVA_HOME/jre/lib/security/java.security
securerandom.source=file:/dev/urandom
或安装:
yum install -y rng-tools
systemctl start rngd
blk_* 文件✅ 优化:
比如:
dfs.namenode.handler.count
dfs.datanode.handler.count
太小,导致并发低
# 1. 看 NameNode 日志
tail -f /var/log/hadoop-hdfs/hadoop-hdfs-namenode-*.log
# 2. 看安全模式
hdfs dfsadmin -safemode get
# 3. 看 DataNode 是否全起来
hdfs dfsadmin -report
# 4. 看主机名解析
hostname -f
# 5. 看 Java 随机源
grep random $JAVA_HOME/jre/lib/security/java.security
CentOS 上 HDFS 启动慢,90% 是:NameNode 回放 editlog + DataNode 注册 + DNS/Java随机源问题
如果你愿意,可以把:
发出来,我可以直接帮你定位是哪一步卡的。