Hadoop HDFS 扩容:新增DN节点
发布时间:2026/9/25 16:45:10 作者:尧图编辑部 阅读量:1,286

扩容往现有集群增加新 DataNode 存储节点如果机器同时部署 NodeManager则同时扩容 YARN 计算资源。扩容对比缩容缩容是迁出数据扩容是数据不会自动迁移新 DN 刚加入是空的已有旧块不会自动均衡到新节点需要手动执行数据均衡。一、完整操作步骤1、新机器环境准备操作系统、JDK 版本和集群保持一致主机名配置 hosts 解析时间同步。部署 Hadoop 程序包配置和集群完全一致配置文件core‑site.xml hdfs‑site.xml yarn‑site.xml。创建 DataNode 数据目录目录权限 hdfs 用户。chown -R hdfs:hadoop /data/hadoop‑datanode2、两种加入集群方式方式 A允许任意节点接入大部分生产hdfs‑site.xml不配置dfs.hosts新 DN 启动之后自动注册到 NameNode直接加入集群。方式 B配置白名单 dfs.hosts严格管控集群节点hdfs‑site.xmlproperty namedfs.hosts/name value/etc/hadoop/conf/allow_hosts/value /property把新节点主机名写入allow_hostsNN 执行刷新配置hdfs dfsadmin -refreshNodes3、启动新节点服务# HDFS systemctl start hadoop‑hdfs‑datanode # 如果同时作为YARN计算节点 systemctl start hadoop‑yarn‑nodemanager4、验证节点注册成功hdfs dfsadmin -report新节点状态显示In Service代表成功加入集群。⚠️此时新 DN 磁盘是空的。历史旧数据块不会自动跑到新节点只有新写入的数据才会分配到新 DN。集群磁盘会出现老节点磁盘使用率很高新节点很空闲磁盘不均衡。5、执行 HDFS 数据均衡 balancer扩容必做Balancer 作用把已有数据块迁移一部分到新 DataNode均衡各个 DN 磁盘使用率。# 启动均衡默认阈值10%各个节点磁盘使用率相差不超过10%就停止 hdfs balancer -threshold 10参数说明-threshold磁盘偏差百分比调小均衡更彻底消耗更多网络 IO。均衡会占用集群带宽业务低峰执行避开高峰。可以限制均衡带宽防止打满网卡hdfs dfsadmin -setBalancerBandwidth 104857600 # 单位byte100MB/sHadoop3 支持磁盘级均衡 diskbalancer单台 DataNode 内部多块磁盘之间做数据均衡。hdfs diskbalancer -plan dn‑new01 hdfs diskbalancer -execute dn‑new01.plan.json二、YARN 侧扩容新节点启动 NodeManager 后自动注册 ResourceManagerYARN 资源立刻增加不需要额外均衡。YARN 容器调度 RM 自动分配。三、扩容常见坑忘记执行 balancer新节点磁盘空闲老节点磁盘打满存储资源没有充分利用。balancer 运行很慢数据量大调大带宽放到凌晨低峰运行。balancer 不工作集群处于安全模式先退出安全模式副本数设置过高存在退役中的节点会阻塞 balancer。host 解析、时间不同步DN 注册不上 NameNode。四、HDFS 扩容 vs 缩容对比表项目扩容新增 DN缩容下线 DN decommission核心动作新节点加入不会自动迁移旧数据旧节点数据块主动迁出到其他 DN数据迁移触发需要手动执行balancer均衡refreshNodes后 NN 自动迁移块节点状态In ServiceDecommissioning → Decommissioned数据风险低新节点为空高必须等 Decommissioned 完成再关机YARN NodeManager启动即注册立刻提供资源NM 退役不杀运行容器长任务 (Flink) 需要先停任务释放容器关键操作hdfs balancerhdfs dfsadmin -refreshNodes观察 decommission 状态约束无硬性节点数量约束剩余 DN 数 ≥ HDFS 副本数否则退役无法完成五、精简版HDFS 扩容新增 DataNode新机器环境、配置文件和集群保持一致如果配置节点白名单 dfs.hosts需要把新节点加入白名单并 refreshNodes。启动 DataNode同时部署 NM 则启动 NodeManager节点注册到 NN状态 In‑Service 即加入集群。新节点刚加入不会自动迁移历史数据需要运行 hdfs balancer 做数据均衡把旧数据块迁移到新 DN平衡各节点磁盘使用率业务低峰执行限制带宽避免影响业务。Hadoop3 还支持 diskbalancer 做单节点内磁盘均衡。缩容是执行 decommission 退役流程NN 自动迁出待下线节点的数据块等待 Decommissioned 完成再关机如果机器上有 YARN 长驻任务如 Flink要先 stop 任务释放容器否则 NM 无法完成退役。 缩容必须保证剩余 DN 数量大于等于副本数否则块副本无法满足退役卡住。六、QA1. 扩容完新 DN为什么磁盘使用率很低新节点只接收新写入的数据历史存量数据不会自动过来需要 balancer 迁移。2. balancer 和 decommission 块迁移区别decommission把待退役节点上所有块全部搬走balancer在全部存活节点之间部分迁移块让磁盘使用率差距在阈值以内。