在 CentOS 上扩容 HDFS,一般不是“改一个配置就能变大”,而是 增加存储容量或节点。下面按最常见场景给你一个完整、可操作的扩容指南。
| 扩容方式 | 适用场景 |
|---|---|
| ✅ 增加 DataNode 节点 | 最推荐、最标准 |
| ✅ 给现有节点加磁盘 | 单机磁盘不够 |
⚠ 修改 dfs.datanode.data.dir |
新磁盘映射 |
| ⚠ 调整副本数 | 不增加容量,只影响冗余 |
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 主机名
hostnamectl set-hostname datanode3
# 配置 /etc/hosts
192.168.1.10 namenode
192.168.1.11 datanode1
192.168.1.12 datanode2
192.168.1.13 datanode3
yum install -y java-1.8.0-openjdk
Hadoop 版本必须与 NameNode 完全一致
hdfs-site.xml<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hdfs/datanode</value>
</property>
core-site.xml<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
# Hadoop 2.x
vim etc/hadoop/slaves
# Hadoop 3.x
vim etc/hadoop/workers
增加:
datanode3
hdfs --daemon start datanode
✅ 在 NameNode 上验证:
hdfs dfsadmin -report
你会看到 新增节点已加入
mkfs.xfs /dev/sdb
mkdir -p /data2/hdfs/datanode
mount /dev/sdb /data2/hdfs/datanode
设置开机自动挂载 /etc/fstab
hdfs-site.xml<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hdfs/datanode,/data2/hdfs/datanode</value>
</property>
✅ 多个目录用 逗号分隔
hdfs --daemon stop datanode
hdfs --daemon start datanode
扩容后数据不会自动迁移,需要 手动触发均衡
hdfs balancer
hdfs balancer \
-threshold 10 \
-policy datanode
threshold:节点间磁盘使用率差值(%)hdfs dfsadmin -report
重点看:
# 检查 UUID 冲突
cat /data/hdfs/datanode/current/VERSION
chown -R hdfs:hdfs /data2/hdfs
chmod 700 /data2/hdfs
如果你愿意,可以告诉我:
我可以 直接给你一套完全贴合你环境的扩容方案 ✅