CentOS 上配置 HDFS(Hadoop Distributed File System)失败 的原因非常多,下面按常见原因 → 排查方式 → 解决建议给你一个系统性的总结,你可以对照排查。
HDFS 强依赖 Java。
常见错误
java: command not foundUnsupported major.minor version排查
java -version
echo $JAVA_HOME
解决
yum install java-1.8.0-openjdk-devel
hadoop-env.sh 中指定:export JAVA_HOME=/usr/lib/jvm/java-1.8.0
HDFS 对 hostname 极其敏感。
问题表现
NameNode 起不来unknown host排查
hostname
cat /etc/hosts
正确示例
127.0.0.1 localhost
192.168.1.10 master
192.168.1.11 slave1
解决
/etc/hostname/etc/hosts127.0.0.1 主机名常见错误
<value>hdfs://localhost:9000</value>
但在集群模式下用了 localhost。
正确示例
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
常见问题:
dfs.replication示例
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/datanode</value>
</property>
解决
mkdir -p /data/hadoop/namenode
mkdir -p /data/hadoop/datanode
chown -R hadoop:hadoop /data/hadoop
错误
Cannot create directory ...
NameNode not formatted
解决
hdfs namenode -format
⚠️ 注意:
Hadoop 官方不建议用 root。
解决
useradd hadoop
su - hadoop
并确保:
chown -R hadoop:hadoop $HADOOP_HOME
问题
start-dfs.sh 卡住解决
ssh-keygen
ssh-copy-id master
ssh-copy-id slave1
问题
解决
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
# 永久
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
查看错误最有效方式:
less $HADOOP_HOME/logs/hadoop-*-namenode-*.log
less $HADOOP_HOME/logs/hadoop-*-datanode-*.log
如果你愿意,可以把:
发出来,我可以精准定位你这一次失败的具体原因。