Ubuntu HDFS如何扩展存储容量
导读:Ubuntu 环境下扩展 HDFS 存储容量的实用方案 一、扩容思路总览 在 HDFS 层面,容量由 DataNode 数量 × 单节点可用磁盘空间 × 副本数 决定。常见做法有两类: 纵向扩展:为现有 DataNode 增加磁盘或扩...
Ubuntu 环境下扩展 HDFS 存储容量的实用方案
一、扩容思路总览
- 在 HDFS 层面,容量由 DataNode 数量 × 单节点可用磁盘空间 × 副本数 决定。常见做法有两类:
- 纵向扩展:为现有 DataNode 增加磁盘或扩大现有分区,并把新目录加入 dfs.datanode.data.dir,让单个节点能装更多数据。
- 横向扩展:新增 DataNode 节点,直接提升集群总容量与吞吐。
- 在 Linux 层面,优先使用 LVM 管理磁盘,便于在线扩容;若不便使用 LVM,也可新增分区并挂载为新目录供 HDFS 使用。
- 容量增加后,使用 HDFS Balancer 将数据在各节点/各磁盘间均衡,避免热点与不均衡。
二、纵向扩展 现有节点加盘或扩盘
- 步骤
- 检查现状
- 查看节点容量与健康:hdfs dfsadmin -report
- 查看磁盘与挂载:df -hT
- 准备新磁盘(两种常见方式)
- 新增磁盘并分区/格式化/挂载(示例):
- 分区:fdisk /dev/sdb(n 新建分区 → w 保存)
- 格式化:mkfs.xfs /dev/sdb1(或 mkfs.ext4)
- 挂载:mkdir -p /data2 & & mount /dev/sdb1 /data2
- 开机自动挂载:在 /etc/fstab 增加一行
- XFS:/dev/sdb1 /data2 xfs defaults 0 0
- EXT4:/dev/sdb1 /data2 ext4 defaults 0 0
- 使用 LVM(推荐,便于后续在线扩容):
- 初始化物理卷:pvcreate /dev/sdb
- 加入卷组:vgextend vg_data /dev/sdb
- 扩展逻辑卷:lvextend -l +100%FREE /dev/vg_data/lv_hdfs
- 在线扩容文件系统(XFS):xfs_growfs /data1;(EXT4):resize2fs /dev/vg_data/lv_hdfs
- 新增磁盘并分区/格式化/挂载(示例):
- 为 HDFS 准备目录并赋权
- mkdir -p /data2/hadoop & & chown -R hdfs:hadoop /data2/hadoop
- 配置 DataNode 使用新目录
- 编辑 $HADOOP_HOME/etc/hadoop/hdfs-site.xml,在 dfs.datanode.data.dir 中追加新目录(逗号分隔):
- 示例:
< property> < name> dfs.datanode.data.dir< /name> < value> file:///data1/hadoop,file:///data2/hadoop< /value> < /property>
- 示例:
- 编辑 $HADOOP_HOME/etc/hadoop/hdfs-site.xml,在 dfs.datanode.data.dir 中追加新目录(逗号分隔):
- 滚动重启该 DataNode(避免全集群中断)
- 建议逐台执行:$HADOOP_HOME/sbin/hadoop-daemon.sh stop datanode → $HADOOP_HOME/sbin/hadoop-daemon.sh start datanode
- 均衡数据
- 启动均衡器:$HADOOP_HOME/sbin/start-balancer.sh(或 hdfs balancer)
- 检查现状
- 重要说明
- HDFS 不会把多块磁盘的空间“合并”成一个卷,多盘是通过 多个数据目录 并行使用的;单盘满并不会自动把块迁移到新盘,需要靠 Balancer 或手工迁移目录后重启 DataNode。
- 为避免单盘被写满影响系统,可设置磁盘预留:
< property> < name> dfs.datanode.du.reserved< /name> < value> 32212254720< /value> < !-- 30GB,单位 Byte --> < /property> - 扩容后可用 hdfs dfsadmin -report 与 NameNode Web UI(50070) 验证容量变化。
三、横向扩展 新增 DataNode 节点
- 步骤
- 准备新机器(Ubuntu),安装与主集群一致版本的 Hadoop,配置 JAVA_HOME/HADOOP_HOME,打通 SSH 免密。
- 配置 core-site.xml 与 hdfs-site.xml(与主集群一致,尤其是 fs.defaultFS 与副本因子)。
- 启动 DataNode:$HADOOP_HOME/sbin/hadoop-daemon.sh start datanode
- 在 NameNode 上验证:hdfs dfsadmin -report,应能看到新节点与容量加入。
- 运行 Balancer 使数据分布均衡。
- 适用场景
- 需要快速提升集群总容量与写入吞吐。
- 与纵向扩展结合使用效果更佳(节点数↑ + 单节点容量↑)。
四、常见问题与注意事项
- 处于 Safe mode 且无法退出,常见原因是 磁盘空间不足。应先扩容磁盘或清理空间,再退出安全模式:hadoop dfsadmin -safemode leave。
- 扩容后老盘仍先被写满:HDFS 不会自动把块从旧盘迁到新盘,需通过 Balancer 或迁移 dfs.datanode.data.dir 下的数据后重启 DataNode 来均衡。
- 多盘不等于“合并”:HDFS 通过 多目录并行存储 提升容量与吞吐,单盘满不会自动溢出到其它盘。
- 预留系统盘空间:设置 dfs.datanode.du.reserved,避免 DataNode 写满系统盘导致异常。
- 变更尽量滚动进行:逐台重启 DataNode,并在变更窗口内观察 Balancer 进度与集群健康。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu HDFS如何扩展存储容量
本文地址: https://pptw.com/jishu/764719.html
