“CentOS 上 HDFS 报错”这个范围比较大,HDFS 报错的原因非常多,通常和 系统环境、配置、权限、磁盘、Java 环境 等有关。下面我按常见原因 + 排查思路给你总结一下,你可以对照看看是哪种情况。
HDFS 依赖 JDK,CentOS 默认可能是 OpenJDK 或没有配 JAVA_HOME。
报错示例
java: command not found
UnsupportedClassVersionError
排查
java -version
echo $JAVA_HOME
解决
hadoop-env.sh 中明确指定:export JAVA_HOME=/usr/java/jdk1.8.0_xxx
CentOS 默认开启防火墙和 SELinux,HDFS 端口不通。
报错示例
Connection refused
No route to host
排查
systemctl status firewalld
getenforce
解决
systemctl stop firewalld
setenforce 0
或开放端口(50010、50020、50070、9000 等)
第一次启动 HDFS 前必须格式化 NameNode。
报错示例
NameNode is not formatted
解决
hdfs namenode -format
⚠️ 注意:不要重复格式化已有集群
HDFS 数据目录必须是启动用户可写。
报错示例
Permission denied
Cannot create directory
排查
ls -ld /data/hadoop
whoami
解决
chown -R hadoop:hadoop /data/hadoop
HDFS 对 hostname 非常敏感。
报错示例
UnknownHostException
检查
hostname
cat /etc/hosts
建议配置
192.168.1.10 master
192.168.1.11 slave1
CentOS 磁盘满会导致 DataNode 直接挂掉。
df -h
常见错误:
fs.defaultFS 写错dfs.replication 大于节点数重点检查
core-site.xml
hdfs-site.xml
$HADOOP_HOME/logs/
重点看:
hadoop-*-namenode-*.loghadoop-*-datanode-*.logjps
缺 NameNode / DataNode 基本就是配置或权限问题
如果你愿意,可以直接贴:
start-dfs.sh)cat /etc/redhat-release)我可以直接帮你定位是哪一行配置或系统问题。