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
查看平衡进度),及时处理异常。