温馨提示×

Ubuntu上HDFS如何扩展存储容量

小樊
35
2025-11-29 03:22:41
栏目: 云计算

Ubuntu上扩展HDFS存储容量的实用方案

一、扩容思路总览

  • 垂直扩容:在现有 DataNode 上增加新磁盘或扩大已有磁盘分区,并把新目录加入 HDFS 的数据目录,使单节点容量提升。适合物理机/虚拟机可加盘的场景。
  • 水平扩容:新增 DataNode 节点,直接提升集群总容量。适合容量缺口较大或需要线性扩展的场景。
  • 两者可结合:先垂直扩容缓解燃眉之急,再水平扩容获得长期弹性。

二、垂直扩容 现有节点加磁盘或扩分区

  • 步骤1 准备新磁盘与分区
    • 识别磁盘:lsblk/fdisk -l;对新盘分区(示例):fdisk /dev/sdX → n → p → w;如为 LVM,创建 PV、扩容 VG/LV 后再格式化。
    • 格式化与挂载:mkfs.xfs/ext4 /dev/sdX1;mkdir -p /newdisk;mount /dev/sdX1 /newdisk;写入 /etc/fstab 实现开机挂载。
  • 步骤2 授权并配置 HDFS 使用新目录
    • 授权目录(以 hdfs:hadoop 运行 HDFS 为例):chown -R hdfs:hadoop /newdisk。
    • 配置 dfs.datanode.data.dir:在 hdfs-site.xml 中把新目录追加到现有值,例如:
      dfs.datanode.data.dir/hadoop/hdfs/data,/newdisk
      多个目录以英文逗号分隔,HDFS 会把块分布到这些目录(跨盘多目录不等价于 RAID0/条带合并,仅是多目录并行存放)。
  • 步骤3 滚动重启 DataNode
    • 单节点:stop-dfs.sh → start-dfs.sh(或仅重启该节点的 DataNode 进程)。
    • 集群:逐台滚动重启,避免同时下线过多节点。
  • 步骤4 数据均衡
    • 执行均衡器,使新老磁盘/目录的使用率趋近:hdfs balancer(可加阈值,如 -threshold 10)。
  • 重要说明
    • 直接扩分区/加盘后,HDFS 并不会把旧盘数据“合并”到新盘;如需缓解单盘打满,可继续添加多个数据目录,并通过均衡器逐步迁移数据。
    • 为系统盘/数据盘预留空间,避免 NameNode 因可用空间过低进入 SafeMode(常见现象是 put 失败并提示处于安全模式,需释放或扩容磁盘后退出)。

三、水平扩容 新增 DataNode 节点

  • 步骤1 准备新节点
    • 安装与主集群一致版本的 Hadoop,配置 JAVA_HOME/HADOOP_HOME,打通网络与 SSH 免密。
  • 步骤2 配置与启动
    • 保持 core-site.xml、hdfs-site.xml 与主集群一致;如网络环境需要,可临时设置 dfs.namenode.datanode.registration.ip-hostname-check=false 以避免注册失败。
    • 启动 DataNode:在新节点执行 start-dfs.sh 或 $HADOOP_HOME/sbin/hadoop-daemon.sh start datanode。
  • 步骤3 验证与均衡
    • NameNode 上执行 hdfs dfsadmin -report,确认新节点已加入且容量可见。
    • 运行 hdfs balancer(如 -threshold 10)将数据均匀分散到新节点。
  • 步骤4 客户端与监控
    • 如有应用直连集群,需同步更新客户端配置;扩容期间可能对性能有影响,建议在低峰时段执行并持续监控 NameNode/DataNode 日志与 Web UI。

四、容量与运维要点

  • 多目录不等于合并容量:dfs.datanode.data.dir 可配置多个目录,HDFS 会在这些目录间分布块,但并不会把多盘空间“条带化/合并”为一个逻辑卷;如需跨盘容量合并,应在 Linux 层使用 LVM 或在虚拟化层扩容虚拟磁盘。
  • 避免单盘打满:设置 dfs.datanode.du.reserved(单位字节)为系统盘/数据盘预留空间,例如预留 30GB
    dfs.datanode.du.reserved32212254720
    预留空间可防止磁盘被写满导致节点异常或影响操作系统。
  • 安全模式与可用空间:NameNode 在可用空间过低时会进入 SafeMode,写操作被拒;需扩容或清理空间后退出安全模式,必要时可手动离开(谨慎使用)。
  • 均衡策略:新增磁盘或节点后务必执行 balancer,并可用 -threshold 控制均衡触发阈值(如 5–10),平衡速度与集群负载之间取平衡。

0