在 Linux 环境下对 HDFS 集群进行扩容,通常分为 横向扩容(加 DataNode) 和 纵向扩容(加磁盘/调整配置) 两种方式。下面按常见生产场景说明。
适用于:集群存储或计算资源不足。
适用于:机器数量不变,但磁盘容量不足。
只是提高利用率,不算真正扩容。
# 示例
192.168.1.10 namenode
192.168.1.11 datanode1
192.168.1.12 datanode2
192.168.1.13 newdatanode
拷贝 NameNode 的 Hadoop 配置到新节点:
scp -r $HADOOP_HOME newdatanode:/opt/
scp /etc/hosts newdatanode:/etc/hosts
确保以下配置文件一致:
core-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml重点关注:
<property>
<name>dfs.datanode.data.dir</name>
<value>/data1/dfs,/data2/dfs</value>
</property>
⚠️ 不要格式化 NameNode
# 在新节点执行
hdfs --daemon start datanode
或老版本:
hadoop-daemon.sh start datanode
只要 workers 文件包含新节点即可。
# workers 文件
datanode1
datanode2
newdatanode
在 hdfs-site.xml 中配置:
<property>
<name>dfs.hosts</name>
<value>/etc/hadoop/datanodes.include</value>
</property>
# datanodes.include
datanode1
datanode2
newdatanode
然后刷新节点:
hdfs dfsadmin -refreshNodes
hdfs dfsadmin -report
看到新 DataNode 且 Capacity 增加即成功。
mkfs.ext4 /dev/sdb
mkdir /data2/dfs
mount /dev/sdb /data2/dfs
<property>
<name>dfs.datanode.data.dir</name>
<value>/data1/dfs,/data2/dfs</value>
</property>
hdfs --daemon stop datanode
hdfs --daemon start datanode
新节点加入后,数据不会自动均匀分布。
hdfs balancer \
-threshold 10
参数说明:
threshold:节点使用率差异阈值(%)后台运行:
nohup hdfs balancer -threshold 10 > balancer.log 2>&1 &
fs.defaultFStail -f $HADOOP_LOG_DIR/hadoop-*-datanode-*.log
balancerdiskbalancer(HDFS 3.x)hdfs diskbalancer -plan datanode1
hdfs diskbalancer -execute plan.json
| 扩容方式 | 是否推荐 | 说明 |
|---|---|---|
| 加 DataNode | ✅ | 最安全、最标准 |
| 加磁盘 | ✅ | 成本更低 |
| 改副本数 | ❌ | 非真正扩容 |
如果你能提供:
我可以给你 更精确的扩容方案。