Linux 上 HDFS 配置“失败”是一个比较宽泛的问题,常见原因通常集中在环境、配置、权限、网络通信几个方面。下面我按最常见故障场景给你梳理,并给出排查方法。
HDFS 启动依赖 SSH。
start-dfs.sh
如果提示输入密码或连接失败:
✅ 解决:
ssh-keygen -t rsa
ssh-copy-id localhost
# 或
ssh-copy-id user@datanode
验证:
ssh localhost
Hadoop 启动脚本依赖 JAVA_HOME
❌ 表现:
Error: JAVA_HOME is not set
✅ 解决: 编辑:
vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
添加:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
这是最容易出错的地方。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/data/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/data/data</value>
</property>
</configuration>
⚠ 常见错误:
HDFS 对目录权限要求严格。
❌ 错误:
Permission denied
✅ 解决:
mkdir -p /opt/hadoop/data/name
mkdir -p /opt/hadoop/data/data
chown -R hadoop:hadoop /opt/hadoop
第一次启动必须格式化:
hdfs namenode -format
⚠ 注意:
HDFS 默认端口:
✅ 检查:
netstat -tunlp | grep 9000
✅ 关闭防火墙(测试环境):
systemctl stop firewalld
特别是多节点集群。
vi /etc/hosts
示例:
192.168.1.10 namenode
192.168.1.11 datanode1
❌ 表现:
port already in use
✅ 解决:
stop-dfs.sh
jps
kill -9 <pid>
# 1. 看进程
jps
# 2. 看日志
tail -100f $HADOOP_HOME/logs/hadoop-*-namenode-*.log
# 3. 测试 HDFS
hdfs dfs -ls /
你可以直接贴出:
我可以直接帮你定位是哪一步配置错了。