在 CentOS 上 HDFS 启动慢 通常不是 HDFS 本身的问题,而是 系统环境、配置或资源问题 导致。下面按常见原因 + 排查方向给你系统总结一下。
HDFS 大量使用 hostname(特别是 NameNode、DataNode 之间通信)。
表现:
start-dfs.sh 卡在 Starting datanode…UnknownHostException 或反向解析很慢解决:
# 修改 /etc/hosts
192.168.1.10 master
192.168.1.11 slave1
192.168.1.12 slave2
并关闭 DNS 解析:
# /etc/ssh/sshd_config
UseDNS no
✅ 推荐:所有节点 /etc/hosts 完全一致
HDFS 用 ssh 启动各节点。
表现:
ssh slave1 也很慢解决:
# 关闭 GSSAPI
vi /etc/ssh/ssh_config
GSSAPIAuthentication no
配置免密:
ssh-keygen
ssh-copy-id slave1
CentOS 默认使用 OpenJDK,可能出现:
SecureRandom 阻塞典型日志:
Random seed generation took too long
解决(强烈推荐):
vi $JAVA_HOME/jre/lib/security/java.security
# 修改
securerandom.source=file:/dev/urandom
dfs.namenode.name.dir 数据多优化:
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>3600</value>
</property>
并定期:
hdfs dfsadmin -safemode leave
调优:
<property>
<name>dfs.heartbeat.interval</name>
<value>3</value>
</property>
CentOS 默认:
快速排查:
systemctl stop firewalld
setenforce 0
✅ 生产环境要开端口而不是全关
HDFS 启动会:
检查:
iostat -x 1
建议:
dfs.datanode.data.dir 多盘free -h
如果 swap 被用:
swapoff -a
✅ /etc/hosts 正确
✅ SSH 免密 + 快
✅ Java 用 urandom
✅ 防火墙关闭或放行
✅ 磁盘 IO 正常
✅ NameNode 元数据不过大
你可以贴出:
start-dfs.sh 卡在哪一步hadoop-root-namenode-*.log)我可以直接告诉你 具体是哪一条原因导致的。