在 CentOS 上对 HDFS 进行扩容,通常流程是:增加 DataNode 节点 / 增加磁盘 → 让 HDFS 识别新存储 → 必要时重新平衡数据。下面按常见场景逐步说明。
在扩容前,先确认现有集群状态。
# 查看 HDFS 总容量和使用情况
hdfs dfsadmin -report
重点看:
java -version 确认)# 创建 hadoop 用户
useradd hadoop
从现有 NameNode 拷贝配置:
scp -r $HADOOP_HOME newnode:/opt/hadoop
重点配置文件:
core-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xmlworkers(或 slaves,视 Hadoop 版本)⚠️ 不要删除原节点配置
在所有节点上:
vi /etc/hosts
示例:
192.168.1.10 master
192.168.1.11 node1
192.168.1.12 newnode
并确保:
hostname
与 hosts 中一致。
如果 NameNode 要管理新节点:
ssh-copy-id newnode
在 NameNode 修改:
vi $HADOOP_HOME/etc/hadoop/workers
添加:
newnode
在新节点执行:
$HADOOP_HOME/sbin/hadoop-daemon.sh start datanode
或直接:
hdfs --daemon start datanode
验证:
hdfs dfsadmin -report
✅ 新节点应出现在 Live datanodes 中,容量自动增加。
lsblk
fdisk /dev/sdb
mkfs.ext4 /dev/sdb1
mkdir /data2
mount /dev/sdb1 /data2
写入 /etc/fstab 实现开机自动挂载。
编辑 hdfs-site.xml:
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/dfs/dn,/data2/dfs/dn</value>
</property>
多个目录用逗号分隔
mkdir -p /data2/dfs/dn
chown -R hdfs:hadoop /data2/dfs/dn
chmod 700 /data2/dfs/dn
hdfs --daemon stop datanode
hdfs --daemon start datanode
验证:
hdfs dfsadmin -report
新扩容后,HDFS 不会自动均衡数据,需要手动执行:
hdfs balancer
常用参数:
hdfs balancer -threshold 10
✅ 生产环境建议执行,避免热点节点。
dfs.datanode.data.dir 未修改hdfs dfsadmin -safemode get
hdfs dfsadmin -safemode leave
✅ 新增节点
✅ 新增磁盘
dfs.datanode.data.dir如果你愿意,可以告诉我:
我可以给你 更精确的配置示例。