温馨提示×

centos搭建hdfs为何失败

小樊
36
2026-10-18 03:11:08
栏目: 智能运维

在 CentOS 上搭建 HDFS(Hadoop 分布式文件系统)失败的原因有很多,下面我按常见失败原因 + 排查思路 + 示例解决方案给你系统梳理一下,方便你对照排查。


一、环境准备类问题(最常见)

1. JDK 未安装或版本不对

现象

  • 启动 start-dfs.sh 报错:JAVA_HOME is not set
  • 或 Hadoop 启动后直接退出

解决

java -version

推荐:

  • JDK 8(Hadoop 2.x / 3.x 最稳)
  • 不建议 JDK 11+(部分老版本不兼容)

设置:

export JAVA_HOME=/usr/java/jdk1.8.0_XXX

2. 防火墙 / SELinux 未关闭

现象

  • NameNode 起来了,但 DataNode 连不上
  • 浏览器访问 9870 / 50070 无法打开

解决

systemctl stop firewalld
systemctl disable firewalld

setenforce 0
# 永久关闭
vi /etc/selinux/config
SELINUX=disabled

3. 主机名 / hosts 配置错误

现象

  • DataNode 无法注册到 NameNode
  • 日志中出现 UnknownHostException

解决

hostnamectl set-hostname node1

vi /etc/hosts
192.168.1.10 node1
192.168.1.11 node2

⚠️ 不要用 127.0.0.1 配 NameNode 地址


二、Hadoop 配置类问题

4. core-site.xml / hdfs-site.xml 配置错误

常见错误

  • fs.defaultFS 写错
  • NameNode 目录不存在或无权限

示例(单节点)

<!-- core-site.xml -->
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://node1:9000</value>
</property>
<!-- hdfs-site.xml -->
<property>
  <name>dfs.namenode.name.dir</name>
  <value>/data/hadoop/name</value>
</property>
<property>
  <name>dfs.datanode.data.dir</name>
  <value>/data/hadoop/data</value>
</property>

目录必须存在:

mkdir -p /data/hadoop/name /data/hadoop/data
chown -R hadoop:hadoop /data/hadoop

5. 未格式化 NameNode

现象

  • NameNode 起不来
  • 日志:NameNode is not formatted

解决

hdfs namenode -format

⚠️ 只能格式化一次,重复格式化会导致 DataNode 失效


三、用户与权限问题

6. 用 root 启动 Hadoop

现象

  • 权限错误
  • DataNode 无法写数据

解决

useradd hadoop
su - hadoop

所有 Hadoop 操作都在 hadoop 用户下执行


四、SSH 免密问题

7. SSH 未配置免密

现象

  • start-dfs.sh 卡住
  • 一直提示输入密码

解决

ssh-keygen -t rsa
ssh-copy-id node1
ssh-copy-id node2

五、日志查看(最重要)

8. 不看日志 = 瞎猜

日志位置:

$HADOOP_HOME/logs/

重点看:

  • hadoop-*-namenode-*.log
  • hadoop-*-datanode-*.log

六、快速自检清单 ✅

  • [ ] JDK 正常
  • [ ] 防火墙 / SELinux 关闭
  • [ ] hosts 正确
  • [ ] Hadoop 用户启动
  • [ ] NameNode 已格式化
  • [ ] SSH 免密
  • [ ] 目录权限正确
  • [ ] 配置文件无错

七、如果你愿意

你可以把 具体报错信息或日志贴出来(尤其是 NameNode / DataNode 日志),我可以精准帮你定位是哪一步失败。

你现在是:

  • 单节点?
  • 伪分布?
  • 完全分布式?

我可以按你的场景给你一套可直接用的配置。

0 踩