Linux 下 HDFS 配置失败是很常见的问题,通常不是“某一步错了就完全没救”,而是配置、环境、权限、网络这几类原因。下面给你一个排查思路和常见解决方法,按顺序来基本都能定位。
HDFS 强依赖 Java:
java -version
要求:
JAVA_HOME 必须配置检查:
echo $JAVA_HOME
如果没配置,在 ~/.bashrc 或 /etc/profile 中加:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
HDFS 主要看这几个文件(在 $HADOOP_HOME/etc/hadoop/):
core-site.xml<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
hdfs-site.xml<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/data/datanode</value>
</property>
⚠️ 目录必须存在且有权限:
mkdir -p /opt/hadoop/data/namenode
mkdir -p /opt/hadoop/data/datanode
很多人失败就是忘了这一步:
hdfs namenode -format
⚠️ 注意:
start-dfs.sh
jps
应至少看到:
日志路径:
$HADOOP_HOME/logs/
重点看:
hadoop-*-namenode-*.loghadoop-*-datanode-*.log常见错误关键词:
java.net.BindException → 端口冲突Permission denied → 权限问题Incompatible clusterIDs → 重复格式化Connection refused → 配置或防火墙问题原因:NameNode 被重复格式化
解决:
rm -rf /opt/hadoop/data/datanode/*
再重启
sudo chown -R hadoop:hadoop /opt/hadoop
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh localhost
sudo ufw disable
或开放端口:
sudo firewall-cmd --add-port=9000/tcp --permanent
你可以直接把以下信息发我:
core-site.xml / hdfs-site.xmljps 输出结果我可以逐行帮你定位问题。