温馨提示×

linux hdfs怎么扩容

小樊
31
2026-09-19 20:45:57
栏目: 智能运维

Linux 上扩容 HDFS,通常分为 两种情况
1️⃣ 添加新 DataNode 节点(横向扩容,最常见)
2️⃣ 在已有节点上增加磁盘(纵向扩容)

下面分别说明(以 Hadoop HDFS 为例,常见版本 CDH / HDP / 原生 Apache Hadoop 通用)。


一、添加新 DataNode(横向扩容)

1. 新节点准备

  • 安装相同版本的 JDK
  • 安装相同版本的 Hadoop
  • 配置 hosts / DNS
  • 配置 SSH 免密(NameNode → 新 DataNode)
# 示例
192.168.1.10 namenode
192.168.1.11 datanode1
192.168.1.12 datanode2  # 新节点

2. 配置 Hadoop

新 DataNode 上:

cd $HADOOP_HOME/etc/hadoop

确保以下文件与 NameNode 一致:

  • core-site.xml
  • hdfs-site.xml
  • workers(或 slaves
<!-- core-site.xml -->
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://namenode:9000</value>
</property>

3. 启动 DataNode

在新节点执行:

hdfs --daemon start datanode

或(旧版本):

hadoop-daemon.sh start datanode

4. 验证

hdfs dfsadmin -report

应能看到 新的 DataNode 和容量增加。


5. 数据再均衡(强烈推荐)

hdfs balancer

或限制带宽:

hdfs dfsadmin -setBalancerBandwidth 104857600
hdfs balancer -threshold 10

二、已有节点增加磁盘(纵向扩容)

1. 挂载新磁盘

mkfs.ext4 /dev/sdb
mkdir /data2
mount /dev/sdb /data2

写入 /etc/fstab 持久化。


2. 修改 hdfs-site.xml

<property>
  <name>dfs.datanode.data.dir</name>
  <value>/data1/dfs,/data2/dfs</value>
</property>

多个目录用逗号分隔


3. 重启 DataNode

hdfs --daemon stop datanode
hdfs --daemon start datanode

4. 验证

hdfs dfsadmin -report

三、NameNode 需要扩容吗?

  • NameNode 不存数据,只存元数据
  • 一般不需要扩容
  • 如果元数据过多:
    • 考虑 HDFS Federation
    • 或升级 NameNode 内存 / 磁盘

四、常见问题

Q1:新节点不显示?

  • 检查防火墙
  • 检查 workers 文件
  • 查看 logs/hadoop-*-datanode-*.log

Q2:容量没增加?

  • 是否执行了 balancer
  • 是否目录权限错误(应为 hdfs:hadoop

五、总结

扩容方式 是否常用 是否需重启
加 DataNode ✅ 最常用
加磁盘 是(单节点)
升级 NameNode ❌ 很少

如果你能告诉我:

  • Hadoop 版本(2.x / 3.x)
  • 是否用 CDH / HDP
  • 是云服务器还是物理机

我可以给你 更精确的操作步骤

0