Ubuntu环境下HDFS存储扩容指南
HDFS(Hadoop分布式文件系统)的扩容主要分为**横向扩容(新增DataNode节点)和纵向扩容(现有节点硬件升级)**两类,其中横向扩容是分布式系统的常规做法,能线性提升存储容量且不影响现有数据;纵向扩容则通过升级现有节点硬件(如增加硬盘)实现,适用于节点资源未充分利用的场景。
hdfs dfsadmin -report命令查看现有集群的DataNode数量、磁盘使用率、副本数等指标,确认集群健康状态(无节点宕机、数据块缺失等问题)。core-site.xml、hdfs-site.xml、yarn-site.xml等核心配置文件至新节点的$HADOOP_HOME/etc/hadoop目录,保证配置一致性(如NameNode地址、副本数、RPC端口等)。/etc/hosts文件,将NameNode、现有DataNode的IP与主机名映射添加至新节点,确保集群内节点能互相解析(如192.168.1.100 namenode、192.168.1.101 datanode1)。ssh-keygen -t rsa),将公钥(id_rsa.pub)复制至新节点的~/.ssh/authorized_keys文件,实现NameNode与新节点的无密码通信(后续Hadoop服务启动需自动连接)。8020、DataNode数据端口50010、Web UI端口50070等),避免网络隔离导致节点无法通信(sudo ufw allow 8020/tcp、sudo ufw allow 50010/tcp)。$HADOOP_HOME/sbin/start-dfs.sh命令,该命令会自动启动DataNode进程,并向NameNode注册(若启动失败,可查看$HADOOP_HOME/logs/hadoop-*-datanode-*.log日志排查问题)。hdfs dfsadmin -report,检查“Live DataNodes”列表是否包含新节点的主机名,或通过NameNode Web界面(http://namenode:50070)查看节点状态(需等待1-2分钟,直到节点状态变为“Live”)。hdfs balancer命令手动触发数据平衡(默认阈值10%,即当节点存储利用率差异超过10%时开始迁移数据)。hdfs balancer -status命令,查看平衡进度(如“Balancing is in progress, current threshold: 5.0%”),平衡完成后会显示“Balancing succeeded”。/dev/sdb),通过Ubuntu“磁盘工具”或命令行(sudo fdisk -l确认新硬盘已识别)。fdisk /dev/sdb命令对新硬盘分区(创建主分区/dev/sdb1,大小为硬盘全部空间),格式化为ext4文件系统(sudo mkfs.ext4 /dev/sdb1)。/data/newdisk),编辑/etc/fstab文件添加自动挂载配置(/dev/sdb1 /data/newdisk ext4 defaults 0 0),执行sudo mount -a挂载分区并验证(df -h查看挂载结果)。$HADOOP_HOME/etc/hadoop/hdfs-site.xml文件,添加或修改dfs.datanode.data.dir属性,将新分区路径加入数据目录列表(如<property><name>dfs.datanode.data.dir</name><value>/data/disk1,/data/newdisk</value></property>,多个目录用逗号分隔)。$HADOOP_HOME/sbin/stop-dfs.sh停止HDFS服务,再执行$HADOOP_HOME/sbin/start-dfs.sh启动服务,确保DataNode加载新配置(查看日志$HADOOP_HOME/logs/hadoop-*-datanode-*.log确认无报错)。hdfs dfsadmin -report命令,查看DataNode的“Storage Used”和“Remaining”字段,确认新磁盘空间已纳入HDFS存储容量(如原存储使用1TB,新增1TB后总容量应为2TB)。hdfs dfsadmin -safemode enter),避免数据写入过程中节点变动导致数据丢失;扩容后务必执行数据平衡,确保副本均匀分布。topology.script.file.name属性),确保数据副本分布在不同机架,提高容错能力(如/etc/hadoop/conf/topology.sh脚本定义节点所属机架)。/namenode/data、DataNode数据目录),避免操作失误导致数据丢失。