在 CentOS 上配置 HDFS(Hadoop 分布式文件系统)是会出错的,这是很常见的情况。HDFS 本身并不“挑系统”,但 CentOS 环境里很容易因为环境、配置或权限问题导致失败,尤其对新手来说。
下面我从 会不会出错 → 常见出错点 → 如何避免 / 排查 给你一个完整说明。
✅ CentOS 完全可以跑 HDFS
❗ 但几乎必然会遇到错误 / 坑,尤其是第一次配置时
✅ 大多数错误不是 HDFS 的问题,而是环境或配置不当
Hadoop 严重依赖 特定版本的 Java
典型错误
java.lang.UnsupportedClassVersionError
java: command not found
建议
✅ 正确示例:
java -version
# openjdk version "1.8.0_xxx"
并在 hadoop-env.sh 中指定:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
HDFS 对 hostname 非常敏感
典型错误
java.net.UnknownHostException
或 DataNode 不启动
必须做
hostname
编辑:
vi /etc/hosts
例如:
127.0.0.1 localhost
192.168.1.10 master
192.168.1.11 slave1
⚠️ 不要只写 127.0.0.1 主机名
启动 HDFS 时需要:
start-dfs.sh
依赖 SSH 本机/节点免密
错误
Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
✅ 解决:
ssh-keygen -t rsa
ssh-copy-id localhost
CentOS 默认 防火墙和 SELinux 很严格
典型表现
✅ 建议关闭:
systemctl stop firewalld
systemctl disable firewalld
SELinux:
vi /etc/selinux/config
SELINUX=disabled
Hadoop 默认需要写数据目录
典型错误
mkdir: Permission denied
✅ 正确做法:
mkdir -p /data/hadoop/dfs/name
mkdir -p /data/hadoop/dfs/data
chown -R hadoop:hadoop /data/hadoop
⚠️ 不要用 root 启动 Hadoop 服务
常见错误:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
<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>
⚠️ 路径一定要真实存在
错误
java.io.IOException: NameNode is not formatted
✅ 解决:
hdfs namenode -format
⚠️ 只格式化一次
| 问题 | 说明 |
|---|---|
| systemd 启动 Hadoop | Hadoop 不支持 systemd |
| OpenJDK 缺包 | 用 java-1.8.0-openjdk-devel |
| CentOS 7 vs 8 | CentOS 8 已 EOL,不建议 |
| 系统用户权限 | 建议用独立 hadoop 用户 |
1. 安装 JDK 8
2. 创建 hadoop 用户
3. 配置 ssh 免密
4. 关闭防火墙 + SELinux
5. 配置 hosts
6. 解压 Hadoop
7. 配置 core-site.xml / hdfs-site.xml
8. 格式化 NameNode
9. start-dfs.sh
✅ 看日志(非常关键):
$HADOOP_HOME/logs/
重点关注:
hadoop-*-namenode-*.loghadoop-*-datanode-*.logCentOS 配置 HDFS 是“一定会出错”的,但所有错误几乎都有标准解决方案。
如果你愿意,你可以直接把:
贴出来,我可以 直接帮你定位到哪一步错了,怎么改 ✅