HDFS在Ubuntu上的扩容方法
HDFS扩容主要分为**横向扩容(新增DataNode节点)和纵向扩容(扩展现有节点存储容量)**两种方式,其中横向扩容是分布式系统常用的高效扩展手段,纵向扩容则适用于现有节点硬件升级场景。以下是详细操作步骤及注意事项:
hdfs dfsadmin -report命令确认现有集群的健康状态(如NameNode、DataNode是否正常),避免扩容前存在节点故障。hdfs dfs -copyToLocal下载到本地或其他存储系统),防止配置错误导致数据丢失。JAVA_HOME环境变量,如export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64)和Hadoop(配置HADOOP_HOME,如export HADOOP_HOME=/opt/hadoop)环境。etc/hadoop目录下的核心配置文件(core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml)复制到新节点的对应目录。hdfs-site.xml,添加或修改dfs.datanode.data.dir属性,指定DataNode的数据存储目录(如/data/dfs/dn,多个目录用逗号分隔)。core-site.xml,确认fs.defaultFS指向集群的NameNode地址(如hdfs://namenode-ubuntu:9000),确保新节点能正确连接NameNode。hdfs-site.xml中的dfs.network.script,确保新节点能被正确分配机架信息。start-dfs.sh命令启动HDFS服务(包含DataNode),或在单独终端执行hadoop-daemon.sh start datanode启动DataNode服务。hdfs dfsadmin -report命令查看集群状态,确认新节点的Hostname、Storage(存储容量)、Last Contact(最后一次通信时间)等信息已显示,表明新节点已成功加入集群。start-balancer.sh命令启动HDFS平衡器,默认会将数据从现有节点迁移至新节点,直到集群各节点的存储利用率差异不超过10%(可通过hdfs balancer -threshold 5调整阈值,如5%)。hdfs balancer -status命令查看平衡状态(如“Balancing is in progress”表示正在进行,“Balancing succeeded”表示完成)。/dev/sdb),并通过lsblk命令确认磁盘已识别。fdisk /dev/sdb对新磁盘进行分区(如创建主分区sdb1),然后格式化为ext4或xfs文件系统(如mkfs.ext4 /dev/sdb1)。/data/dfs/dn),编辑/etc/fstab文件添加挂载信息(如/dev/sdb1 /data/dfs/dn ext4 defaults 0 0),执行mount -a挂载磁盘并设置开机自动挂载。hdfs-site.xml,将新挂载目录添加到dfs.datanode.data.dir属性中(如/data/dfs/dn1,/data/dfs/dn,多个目录用逗号分隔),以扩展DataNode的存储路径。sudo systemctl restart hadoop-datanode。hdfs balancer命令重新平衡数据,将新磁盘的存储空间纳入集群分配,确保数据均匀分布。dfs.network.script(如/etc/hadoop/conf/rack topology.sh),将新节点分配到不同机架,避免数据副本集中在同一机架,提高容错性。dfs.replication参数(默认3),如测试环境可设置为1以节省存储空间,生产环境建议保持3以保证数据可靠性。hdfs dfsadmin -report查看节点状态,hdfs balancer -status查看平衡进度),及时处理异常。