在 Linux 上配置 HDFS(Hadoop Distributed File System) 时,有几个非常关键的点容易踩坑,下面按部署前 → 配置中 → 启动后给你一个实用清单。
/etc/hosts 必须配置正确(所有节点一致)192.168.1.10 master
192.168.1.11 slave1
192.168.1.12 slave2
⚠️ 不要只写 localhost
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭 SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
如果不关,HDFS 端口可能被拦。
NameNode 需要通过 SSH 启动 DataNode。
ssh-keygen -t rsa
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
✅ 测试:
ssh slave1
java -version
hadoop-env.sh 中必须指定:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk
core-site.xml<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
⚠️ 注意:
master 必须能被解析hdfs-site.xml(最容易出错)<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>
✅ 注意
mkdir -p /data/hadoop/dfs/{name,data}
chown -R hadoop:hadoop /data/hadoop
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
⚠️ 副本数 不能大于 DataNode 数量
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
hdfs namenode -format
⚠️ 不要重复执行,否则 DataNode 会无法注册
start-dfs.sh
确认进程:
jps
应看到:
原因通常是:
dfs.datanode.data.dir 不存在✅ 解决:
rm -rf /data/hadoop/dfs/data/*
hdfs namenode -format
http://master:9870fs.defaultFSHDFS 默认会写满磁盘
建议:
<property>
<name>dfs.datanode.du.reserved</name>
<value>10737418240</value> <!-- 10GB -->
</property>
✅ 高可用(HA)
dfs.ha.namenodes✅ 安全
✅ 磁盘
dfs.datanode.data.dir如果你愿意,可以告诉我:
我可以直接帮你对着配置改 ✅