Ubuntu HDFS存储如何扩容
导读:Ubuntu环境下HDFS存储扩容指南 HDFS(Hadoop分布式文件系统)的扩容主要分为**横向扩容(新增DataNode节点)和纵向扩容(现有节点硬件升级)**两类,其中横向扩容是分布式系统的常规做法,能线性提升存储容量且不影响现有数...
Ubuntu环境下HDFS存储扩容指南
HDFS(Hadoop分布式文件系统)的扩容主要分为**横向扩容(新增DataNode节点)和纵向扩容(现有节点硬件升级)**两类,其中横向扩容是分布式系统的常规做法,能线性提升存储容量且不影响现有数据;纵向扩容则通过升级现有节点硬件(如增加硬盘)实现,适用于节点资源未充分利用的场景。
一、横向扩容(新增DataNode节点)
1. 准备工作
- 检查集群状态:使用
hdfs dfsadmin -report命令查看现有集群的DataNode数量、磁盘使用率、副本数等指标,确认集群健康状态(无节点宕机、数据块缺失等问题)。 - 规划新节点:根据业务增长需求确定新增节点数量(建议每新增1个节点,集群存储容量约增加该节点硬盘大小的1/3,因默认3副本策略)。
- 统一配置:确保新节点已安装与现有集群版本一致的Hadoop(如Hadoop 3.3.6),并复制
core-site.xml、hdfs-site.xml、yarn-site.xml等核心配置文件至新节点的$HADOOP_HOME/etc/hadoop目录,保证配置一致性(如NameNode地址、副本数、RPC端口等)。
2. 配置新节点
- 网络设置:为新节点分配静态IP地址,修改
/etc/hosts文件,将NameNode、现有DataNode的IP与主机名映射添加至新节点,确保集群内节点能互相解析(如192.168.1.100 namenode、192.168.1.101 datanode1)。 - SSH无密码登录:在NameNode上生成SSH密钥(
ssh-keygen -t rsa),将公钥(id_rsa.pub)复制至新节点的~/.ssh/authorized_keys文件,实现NameNode与新节点的无密码通信(后续Hadoop服务启动需自动连接)。 - 防火墙放行:开放Hadoop相关端口(NameNode RPC端口
8020、DataNode数据端口50010、Web UI端口50070等),避免网络隔离导致节点无法通信(sudo ufw allow 8020/tcp、sudo ufw allow 50010/tcp)。
3. 启动新节点
- 启动DataNode服务:在新节点上执行
$HADOOP_HOME/sbin/start-dfs.sh命令,该命令会自动启动DataNode进程,并向NameNode注册(若启动失败,可查看$HADOOP_HOME/logs/hadoop-*-datanode-*.log日志排查问题)。 - 验证节点加入:在NameNode上再次执行
hdfs dfsadmin -report,检查“Live DataNodes”列表是否包含新节点的主机名,或通过NameNode Web界面(http://namenode:50070)查看节点状态(需等待1-2分钟,直到节点状态变为“Live”)。
4. 数据平衡
- 触发平衡操作:新增节点后,集群数据分布可能不均,使用
hdfs balancer命令手动触发数据平衡(默认阈值10%,即当节点存储利用率差异超过10%时开始迁移数据)。 - 监控平衡进度:执行
hdfs balancer -status命令,查看平衡进度(如“Balancing is in progress, current threshold: 5.0%”),平衡完成后会显示“Balancing succeeded”。
二、纵向扩容(现有节点硬件升级)
1. 扩展磁盘空间
- 新增物理硬盘:为现有DataNode添加新硬盘(如
/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查看挂载结果)。
2. 配置HDFS识别新磁盘
- 修改HDFS配置:编辑
$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>,多个目录用逗号分隔)。 - 重启DataNode服务:执行
$HADOOP_HOME/sbin/stop-dfs.sh停止HDFS服务,再执行$HADOOP_HOME/sbin/start-dfs.sh启动服务,确保DataNode加载新配置(查看日志$HADOOP_HOME/logs/hadoop-*-datanode-*.log确认无报错)。
3. 验证扩容效果
- 检查存储目录:通过NameNode Web界面或
hdfs dfsadmin -report命令,查看DataNode的“Storage Used”和“Remaining”字段,确认新磁盘空间已纳入HDFS存储容量(如原存储使用1TB,新增1TB后总容量应为2TB)。
三、扩容注意事项
- 数据一致性:扩容前建议停止写入操作(或进入安全模式
hdfs dfsadmin -safemode enter),避免数据写入过程中节点变动导致数据丢失;扩容后务必执行数据平衡,确保副本均匀分布。 - 机架感知:若集群部署在多机架环境中,需配置机架感知(
topology.script.file.name属性),确保数据副本分布在不同机架,提高容错能力(如/etc/hadoop/conf/topology.sh脚本定义节点所属机架)。 - 监控集群:扩容后使用监控工具(如Ganglia、Prometheus+Grafana)实时监控集群性能(CPU、内存、磁盘IO、网络带宽),及时处理节点异常(如DataNode宕机、副本数不足)。
- 备份数据:扩容操作前备份重要数据(如HDFS元数据
/namenode/data、DataNode数据目录),避免操作失误导致数据丢失。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu HDFS存储如何扩容
本文地址: https://pptw.com/jishu/735922.html
