CentOS环境下HDFS存储空间扩容指南
HDFS存储空间扩容主要分为**横向扩容(添加新DataNode)和纵向扩容(扩展现有节点存储)**两种方式,以下是具体操作步骤及注意事项:
横向扩容是通过增加集群中的DataNode数量来扩展存储容量,适用于需要大规模提升存储能力的场景,也是推荐的首选方式。
ssh-keygen -t rsa生成密钥,并将公钥复制到所有集群节点)。core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml)复制到新节点的$HADOOP_HOME/etc/hadoop目录下,确保配置一致(如fs.defaultFS、dfs.replication等参数)。slaves文件:在NameNode节点的$HADOOP_HOME/etc/hadoop/slaves文件中,添加新节点的主机名或IP地址(每行一个),用于集群启动时自动启动新节点的DataNode服务。slaves文件:将更新后的slaves文件复制到所有集群节点的$HADOOP_HOME/etc/hadoop目录下。hadoop-daemon.sh start datanode(或直接使用start-dfs.sh,若slaves文件配置正确,会自动启动新节点的DataNode)。yarn-daemon.sh start nodemanager启动NodeManager服务。hdfs dfsadmin -report命令,检查“Live DataNodes”列表中是否包含新节点的主机名或IP地址。http://<namenode-ip>:9870),在“Datanodes”页面查看新节点的状态(应为“Live”)。纵向扩容是通过增加现有DataNode的本地存储空间来扩展HDFS容量,适用于已有节点有剩余物理磁盘空间的场景。
fdisk /dev/sdb(假设新硬盘为/dev/sdb)对新硬盘进行分区(创建主分区sdb1),然后使用mkfs.xfs /dev/sdb1(或mkfs.ext4,根据系统需求)格式化分区。mkdir -p /data/newdisk创建新挂载点目录。mount /dev/sdb1 /data/newdisk将新分区挂载到指定目录。/etc/fstab文件,添加一行/dev/sdb1 /data/newdisk xfs defaults 0 0(若使用XFS文件系统),确保系统重启后自动挂载。hdfs-site.xml:在所有DataNode节点的$HADOOP_HOME/etc/hadoop/hdfs-site.xml文件中,找到dfs.datanode.data.dir属性(定义DataNode数据存储目录),添加新挂载点的路径(多个目录用逗号分隔)。例如:<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/data,/data/newdisk</value>
</property>
hadoop-daemon.sh stop datanode停止服务,再执行hadoop-daemon.sh start datanode启动服务,使配置生效。pvcreate /dev/sdb将新硬盘创建为物理卷。vgextend centos /dev/sdb(假设卷组名为centos)将物理卷添加到现有卷组。lvextend -l +100%FREE /dev/mapper/centos-root将卷组的所有空闲空间扩展到逻辑卷(逻辑卷路径可通过lvdisplay查看)。xfs_growfs /dev/mapper/centos-root(XFS文件系统)或resize2fs /dev/mapper/centos-root(EXT4文件系统)扩展文件系统以使用新增空间。添加新节点或扩展存储后,建议执行数据平衡操作,使数据均匀分布在所有DataNode上,避免负载不均衡。执行以下命令:
start-balancer.sh
使用hdfs balancer -status监控平衡进度(默认阈值为10%,即节点存储使用率差异不超过10%时停止平衡)。
hdfs dfsadmin -report,检查集群总容量、可用容量是否增加,以及新节点的存储使用情况。hadoop fs -put /local/largefile /test),验证文件是否能正常写入新存储空间。若添加了多个新节点,可适当降低dfs.replication(副本数)的值(如从3调整为2),以节省存储空间。修改hdfs-site.xml中的dfs.replication属性,然后重启HDFS服务:
<property>
<name>dfs.replication</name>
<value>2</value>
</property>