HDFS动态扩展主要分为横向扩展(增加新节点)和纵向扩展(提升现有节点硬件规格)。其中,横向扩展是生产环境最常用的方式,通过添加DataNode节点线性增加存储容量和计算能力,不影响现有服务;纵向扩展则通过增加现有节点的硬盘容量、内存等硬件资源扩展,需重启节点,适用于节点硬件升级场景。
横向扩展是通过添加新节点到集群,实现存储容量的动态增长,具体步骤如下:
/etc/hosts文件,添加新节点主机名与IP映射,并同步至所有节点;hadoop安装包(不含hadoop.tmp.dir数据目录)同步至新节点,保持core-site.xml、hdfs-site.xml等核心配置一致;$HADOOP_HOME/etc/hadoop/workers文件中,添加新节点的主机名(每行一个),用于Hadoop一键启停脚本识别。hdfs --daemon start datanode命令,启动DataNode进程;http://namenode-ip:9870)或命令hdfs dfsadmin -report,查看新节点是否已加入集群(状态为“Live”)。新节点加入后,集群数据未自动分布,需执行数据均衡操作:
hdfs dfsadmin -setBalancerBandwidth 104857600(单位:字节/秒,此处设置为100MB/s);hdfs balancer -threshold 5(-threshold为磁盘使用率差异阈值,超过5%则触发均衡),等待均衡完成(通常需数小时,取决于数据量)。纵向扩展是通过提升现有节点的硬件规格扩展容量,以增加DataNode硬盘容量为例,具体步骤如下:
/dev/sdb),重启机器以识别新设备;fdisk /dev/sdb命令分区(如创建/dev/sdb1),格式化为ext4文件系统(mkfs.ext4 /dev/sdb1);/mnt/newdisk),执行mount /dev/sdb1 /mnt/newdisk,并通过df -h验证挂载结果;/etc/fstab文件,添加/dev/sdb1 /mnt/newdisk ext4 defaults 0 0,确保重启后自动挂载。$HADOOP_HOME/etc/hadoop/hdfs-site.xml文件中,修改dfs.datanode.data.dir属性,添加新挂载目录(如/data1,/mnt/newdisk);hadoop-daemon.sh restart datanode(或systemctl restart hadoop-datanode,取决于安装方式)重启DataNode,使配置生效。topology.script.file.name属性),确保数据副本分布在不同机架,避免单点故障;dfs.replication配置(默认3),根据集群规模调整,避免过多副本占用存储;Used Space%(已用空间比例)、Remaining(剩余空间)、DataNode数量等指标,通过Ambari、Ganglia等工具实时监控;