“CentOS 上 HDFS 配置失败”原因非常多,不能一概而论。下面我按最常见失败点给你系统梳理一下,你可以对照排查;如果你愿意贴具体报错信息,我可以直接帮你定位。
JDK 未正确安装或版本不对
java -version
echo $JAVA_HOME
Hadoop 版本与 CentOS 不兼容
用 root 启动 HDFS
useradd hadoop
chown -R hadoop:hadoop /usr/local/hadoop
su hadoop
目录权限不对
mkdir -p /data/hadoop/dfs/name
mkdir -p /data/hadoop/dfs/data
chown -R hadoop:hadoop /data/hadoop
重点检查这几个文件:
core-site.xml<property>
<name>fs.defaultFS</name>
<name>hdfs://localhost:9000</name>
</property>
hdfs-site.xml<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
hadoop-env.sh必须设置:
export JAVA_HOME=/usr/java/jdk1.8.0_xxx
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
或修改:
vi /etc/selinux/config
SELINUX=disabled
第一次启动前必须执行:
hdfs namenode -format
⚠️ 只能格式化一次,重复格式化会导致 DataNode 无法注册
vi /etc/hosts
示例:
127.0.0.1 localhost
192.168.1.10 master
hostname 也要一致:
hostnamectl set-hostname master
| 报错 | 原因 |
|---|---|
JAVA_HOME not set |
没配 hadoop-env.sh |
Directory is in an inconsistent state |
NameNode 重复格式化 |
DataNode not started |
权限 / clusterID 不一致 |
Connection refused |
防火墙 / 端口错误 |
Permission denied |
用 root 启 / 目录权限错 |
tail -200 $HADOOP_HOME/logs/hadoop-*-namenode-*.log
tail -200 $HADOOP_HOME/logs/hadoop-*-datanode-*.log
start-dfs.sh
jps
如果你愿意,可以直接把:
发给我,我可以精准告诉你哪一步错了。