在 Linux 环境下对 HDFS 进行扩容,通常分为 水平扩容(加 DataNode) 和 垂直扩容(加磁盘) 两种方式。下面按常见场景系统说明。
适用于集群容量不足、需要横向扩展。
# 示例
192.168.1.10 namenode
192.168.1.11 datanode1
192.168.1.12 datanode2
从 NameNode 拷贝配置:
scp -r $HADOOP_HOME/ namenode:/opt/hadoop/
关键配置文件保持一致:
core-site.xmlhdfs-site.xmlworkers(或 slaves)hdfs --daemon start datanode
或:
start-dfs.sh
hdfs dfsadmin -report
看到新 DataNode 即扩容成功。
适用于单节点磁盘满了。
mkfs.ext4 /dev/sdb
mkdir /data2
mount /dev/sdb /data2
写入 /etc/fstab 防止重启丢失。
<property>
<name>dfs.datanode.data.dir</name>
<value>/data1/dfs,/data2/dfs</value>
</property>
多个目录用逗号分隔
hdfs --daemon stop datanode
hdfs --daemon start datanode
可考虑:
HADOOP_NAMENODE_OPTS)不会自动均衡
hdfs balancer
限制带宽(避免影响业务):
hdfs dfsadmin -setBalancerBandwidth 104857600
chown -R hdfs:hadoop /data2/dfs
| 场景 | 方案 |
|---|---|
| 集群容量不足 | 加 DataNode |
| 单节点磁盘满 | 加磁盘 |
| 数据分布不均 | balancer |
| 元数据过多 | Federation / 内存扩容 |
如果你愿意,可以告诉我:
我可以给你一份 可直接执行的扩容操作清单。