在 Linux 环境下对 HDFS 集群进行扩容,通常分为横向扩容(增加 DataNode)和纵向扩容(增加磁盘/调整配置)两种方式。下面按最常见、最安全的扩容方式说明。
HDFS 本身是分布式、易扩展的:
✅ 扩容时 不需要停机(在线扩容)
新节点要求:
tar -zxvf hadoop-3.x.x.tar.gz -C /opt/
从现有 DataNode 拷贝:
scp core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slave node
重点配置:
<!-- core-site.xml -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
<!-- hdfs-site.xml -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/data1/dfs,/data2/dfs</value>
</property>
ssh-keygen
ssh-copy-id datanode-new
hadoop-daemon.sh start datanode
或(Hadoop 3):
hdfs --daemon start datanode
hdfs dfsadmin -report
你会看到:
✅ HDFS 自动开始使用新节点
mkfs.ext4 /dev/sdb
mount /data2 /dev/sdb
<property>
<name>dfs.datanode.data.dir</name>
<value>/data1/dfs,/data2/dfs</value>
</property>
hdfs --daemon stop datanode
hdfs --daemon start datanode
新节点刚加入时,数据是空的,HDFS 不会立刻迁移数据。
hdfs balancer
或限制带宽:
hdfs dfsadmin -setBalancerBandwidth 104857600
hdfs balancer -threshold 10
✅ 避免影响业务性能
| 场景 | 建议 |
|---|---|
| 单 NameNode | 配置 HA(Secondary 不够) |
| NameNode 压力大 | 增加 RAM / 提高元数据性能 |
| 超大规模集群 | 考虑 Federation(多 NameNode) |
HDFS 扩容 = 加机器 / 加磁盘 + 启动 DataNode + Balancer
如果你愿意,可以告诉我:
我可以给你更精确的命令和配置示例。