“HDFS 在 CentOS 上报错”这个说法太宽泛了,具体原因取决于报错内容。不过,在 CentOS 上部署或运行 HDFS 时,常见报错原因大致可以归为以下几类,你可以对照看看属于哪一种:
HDFS 依赖 JDK,CentOS 常见问题:
报错示例
Error: JAVA_HOME is not set and could not be found
解决
java -version
echo $JAVA_HOME
在 hadoop-env.sh 中明确指定:
export JAVA_HOME=/usr/java/jdk1.8.0_xxx
CentOS 默认 hostname 不规范,会导致 HDFS 找不到节点。
报错示例
java.net.UnknownHostException
解决
hostnamectl set-hostname master
/etc/hosts 示例:
127.0.0.1 localhost
192.168.1.10 master
192.168.1.11 slave1
HDFS 不建议用 root 启动,会直接报错或拒绝启动。
报错示例
Running as root: Permission denied
解决
useradd hadoop
chown -R hadoop:hadoop /opt/hadoop
su hadoop
NameNode / DataNode 数据目录无写权限。
报错示例
Cannot create directory /data/hadoop/dfs/name
解决
mkdir -p /data/hadoop/dfs
chown -R hadoop:hadoop /data/hadoop
CentOS 默认 firewalld 开启,导致节点间通信失败。
报错示例
Connection refused
Retrying connect to server
解决
systemctl stop firewalld
systemctl disable firewalld
非常常见但容易被忽略
getenforce
如果是 Enforcing:
setenforce 0
永久关闭:
vi /etc/selinux/config
SELINUX=disabled
常见问题:
典型报错
Cannot assign requested address
Port 9000 already in use
hdfs namenode -format
⚠️ 重复格式化会导致 DataNode 起不来
报错
Incompatible clusterIDs
解决
如果你愿意,可以直接把 具体报错信息贴出来(终端红字),我可以:
你可以贴:
1. 报错完整信息
2. centos 版本
3. hadoop 版本
4. 单机还是集群