首页主机资讯Ubuntu HDFS如何扩展存储容量

Ubuntu HDFS如何扩展存储容量

时间2025-12-05 14:18:04发布访客分类主机资讯浏览1070
导读:Ubuntu 环境下扩展 HDFS 存储容量的实用方案 一、扩容思路总览 在 HDFS 层面,容量由 DataNode 数量 × 单节点可用磁盘空间 × 副本数 决定。常见做法有两类: 纵向扩展:为现有 DataNode 增加磁盘或扩...

Ubuntu 环境下扩展 HDFS 存储容量的实用方案


一、扩容思路总览

  • HDFS 层面,容量由 DataNode 数量 × 单节点可用磁盘空间 × 副本数 决定。常见做法有两类:
    • 纵向扩展:为现有 DataNode 增加磁盘或扩大现有分区,并把新目录加入 dfs.datanode.data.dir,让单个节点能装更多数据。
    • 横向扩展:新增 DataNode 节点,直接提升集群总容量与吞吐。
  • Linux 层面,优先使用 LVM 管理磁盘,便于在线扩容;若不便使用 LVM,也可新增分区并挂载为新目录供 HDFS 使用。
  • 容量增加后,使用 HDFS Balancer 将数据在各节点/各磁盘间均衡,避免热点与不均衡。

二、纵向扩展 现有节点加盘或扩盘

  • 步骤
    1. 检查现状
      • 查看节点容量与健康:hdfs dfsadmin -report
      • 查看磁盘与挂载:df -hT
    2. 准备新磁盘(两种常见方式)
      • 新增磁盘并分区/格式化/挂载(示例):
        • 分区: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
    3. 为 HDFS 准备目录并赋权
      • mkdir -p /data2/hadoop & & chown -R hdfs:hadoop /data2/hadoop
    4. 配置 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>
              
          
    5. 滚动重启该 DataNode(避免全集群中断)
      • 建议逐台执行:$HADOOP_HOME/sbin/hadoop-daemon.sh stop datanode$HADOOP_HOME/sbin/hadoop-daemon.sh start datanode
    6. 均衡数据
      • 启动均衡器:$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 -reportNameNode Web UI(50070) 验证容量变化。

三、横向扩展 新增 DataNode 节点

  • 步骤
    1. 准备新机器(Ubuntu),安装与主集群一致版本的 Hadoop,配置 JAVA_HOME/HADOOP_HOME,打通 SSH 免密。
    2. 配置 core-site.xmlhdfs-site.xml(与主集群一致,尤其是 fs.defaultFS 与副本因子)。
    3. 启动 DataNode$HADOOP_HOME/sbin/hadoop-daemon.sh start datanode
    4. NameNode 上验证:hdfs dfsadmin -report,应能看到新节点与容量加入。
    5. 运行 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
Debian上Java虚拟机如何调优 Ubuntu文件管理如何提高搜索速度

游客 回复需填写必要信息