Hadoop/YARN 集群缩容:下线DN节点

核心原理:HDFS 支持优雅退役 (decommission) 下线 DN,不是直接关机。

执行退役后,NameNode 会把该 DN 上所有数据块,复制迁移到其他存活 DataNode,数据多副本保证不丢失。

迁移完成后,再正式把节点从集群剔除。

说明:DataNode是HDFS 存储节点,管理块数据。

一、完整操作步骤(Hadoop2 / CDH / Hadoop3 通用)

1. 准备退役配置

1)修改 NameNode 节点 hdfs‑site.xml 新增配置 dfs.hosts.exclude,指定退役节点列表文件

复制代码
<property>
    <name>dfs.hosts.exclude</name>
    <value>/etc/hadoop/conf/exclude_hosts</value>
</property>
  • dfs.hosts(白名单):允许加入集群主机列表;不配置代表允许所有
  • dfs.hosts.exclude(黑名单):要退役 / 拒绝的节点列表,一行写一个主机名 / IP

2)在 NN 机器创建文件 exclude_hosts,写入需要下线的 DataNode 主机名/IP

复制代码
dn‑07
dn‑08
# 也可以写IP
192.168.1.1

如果一台机器同时部署 DataNode + NodeManager,主机名也要同步加到 YARN 的退役列表。

2. 加载配置,开始 DataNode 退役

不需要重启 NameNode,刷新配置生效

复制代码
hdfs dfsadmin -refreshNodes

执行之后,NameNode 开始把待退役 DN 上的数据块,迁移复制到其他正常 DN。

3. 观察退役进度(重点,必须等退役完成,不能直接关机)

复制代码
# 查看所有DataNode状态,Decommissioning → 正在迁移;Decommissioned → 退役完成
hdfs dfsadmin -report

状态说明:

1)Decommissioning正在迁移数据块,此时节点还在工作,不要关机。 NameNode 把该节点上所有 block 复制到其他 DN。副本数保持配置副本数(一般 3 副本)。

数据量大的时候,迁移时间会很久,几小时都有可能;看磁盘数据总量、网络带宽。

2)Decommissioned退役完成,所有块全部迁移完毕,可以下线节点

⚠️重要提醒: 退役期间集群磁盘 IO、网络带宽上涨,业务 HDFS 读写会有轻微压力;业务高峰尽量避开缩容操作。

4. 如果该机器同时跑 NodeManager(YARN 计算节点)

机器上同时有 DN+NM,除了 HDFS 退役,YARN 也要做 NM 优雅退役,避免节点上的 Flink/Spark 容器直接被杀,任务故障。

1)修改 yarn‑site.xml,配置 yarn.resourcemanager.nodes.exclude‑path

复制代码
<property>
    <name>yarn.resourcemanager.nodes.exclude-path</name>
    <value>/etc/hadoop/conf/yarn_exclude_hosts</value>
</property>

2)文件写入待下线主机名,刷新RM

复制代码
yarn rmadmin -refreshNodes
  • NM 进入DECOMMISSIONING状态:等待本机运行的 Container 跑完

❗如果 NM 上跑长驻任务(Flink TaskManager),容器不会自动结束。

👉Flink 任务要先 stop/savepoint 释放容器,否则 NM 无法完成退役

详细操作可参考:Yarn NM 常驻Flink任务下线:stop/savepoint 释放容器-CSDN博客

  • NM 状态变为 DECOMMISSIONED:NM 退役完成。

  • 查看单个 NM 节点详细状态

    复制代码
    # 格式 yarn node -status <nodeId>
    # nodeId = hostname:8041,YARN 识别节点的唯一标识
    # 8041 是 NM 内部 RPC 通信端口,**RM 和 NM 之间通信、AM 和 NM 通信,走这个端口;负责容器管理(ContainerManager):申请容器、启停容器、上报容器状态
    yarn node -status dn-07:8041
    
    示例输出关键信息:
    
    ```
    Node-State : RUNNING
    Containers : 0
    Memory-Used : 0MB
    Memory-Capacity : 16384MB
    CPU-Used : 0 vcores
    CPU-Capacity : 8 vcores
    ```
    
    👉Containers : 0 代表该节点没有任何容器(Flink TM 已经全部释放,满足缩容条件)

5. 节点全部退役完成后

1)确认 DN 状态 Decommissioned、NM 状态DECOMMISSIONED

2)停止节点服务

复制代码
systemctl stop hadoop‑hdfs‑datanode
systemctl stop hadoop‑yarn‑nodemanager

3)物理关机,从集群移除

6. 清理配置(可选)

确认节点不再接入集群,保留 exclude 文件,适合场景:机器已经下架、物理机搬走,永久不再复用这台机器,就一直保留在 exclude 文件;

如果后续不再需要该列表,可以把主机名从 exclude_hosts 删除,再次 refreshNodes,适合场景:节点只是临时下线,后续还要复用这台机器,重新加入 HDFS 集群;

二、关键风险点

  1. 不要直接关机 DataNode! 直接关机,还没完成块迁移,如果副本数不足,HDFS 进入安全模式;会触发块复制,加重集群压力;极端情况数据丢失。必须走 decommission 退役流程
  2. 退役速度慢怎么办?
  • 调整参数 dfs.datanode.max.transfer.threads,增加 DN 传输线程;
  • 避开业务高峰执行缩容;
  • 不要一次性大批量节点同时退役,分批下线。

👉缩容前先算剩余节点数 ≥ 副本数

  1. HDFS 副本数问题:集群剩余 DataNode 数量 ≥ block 副本数。比如副本 3,集群至少保留 3 台 DN;如果缩容完只剩 2 台,块副本无法满足,会一直处于 Decommissioning 无法完成。
  2. DN 退役完成,但 NM 一直 DECOMMISSIONING 状态。

机器上还有 Flink/Spark 长运行任务的 Container。

NM 退役只会等待任务自然结束,不会杀容器。

需要手动处理任务释放容器。

退役过程 HDFS 进入安全模式 ,一般是副本不足导致,不要手动强制退出安全模式;等待块复制完成;

三、Hadoop3 新特性

Hadoop3 支持DataNode 内部磁盘退役,可以只下线单块磁盘,不需要下线整个 DataNode 节点。

四、精简版

Hadoop 缩容下线 DataNode,要走优雅退役 decommission 流程,不能直接关机。

  1. 在 hdfs‑site 配置dfs.hosts.exclude,填写待下线节点主机列表。执行hdfs dfsadmin ‑refreshNodes触发退役。
  2. NameNode 会把待退役 DN 上所有数据块迁移复制到其他 DataNode;通过hdfs dfsadmin ‑report观察状态,等待状态变为Decommissioned才算完成。迁移期间节点继续提供服务,数据量大迁移耗时久。
  3. 如果机器同时部署 NodeManager,YARN 也要配置 exclude 列表做 NM 退役。NM 退役不会 kill 正在运行的容器;如果有 Flink 这类长驻任务,需要先 stop 任务释放容器,否则 NM 无法完成退役。
  4. 确认 DN、NM 全部退役完成,再停止服务、关机。
  5. 注意集群剩余 DN 数量必须大于等于 HDFS 副本数;否则块副本无法满足,退役永远完成不了;避开业务高峰缩容,防止网络 IO 压力。

五、高频Q&A

Q:decommissioning 一直不变,是什么原因?

  1. 集群剩余 DataNode 数量小于副本数,没有足够节点存放副本;
  2. 集群网络带宽打满,块复制速度慢;
  3. 待退役节点数据量巨大。

Q:NM 退役和 DN 退役区别?

DN 退役:NN 主动迁移数据块;

NM 退役:RM 不分配新容器到该节点,但是不会杀掉正在运行的容器,已有任务跑完才完成退役。长运行 Flink 任务不会自动结束,需要人工干预。

Q:直接关机 DataNode 会怎么样?

节点离开集群,该节点上的数据块副本丢失。NameNode 检测后会启动块复制,集群压力上升;如果副本数不足,集群进入安全模式,读写受限。

相关推荐
Elastic 中国社区官方博客1 小时前
使用 Elasticsearch 和 Jina 进行 AI 视频搜索:精准找到你需要的视频片段秒数
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
实验室管理云平台1 小时前
环境检测实验室管理系统:提升效率与数据准确性的关键工具
大数据·数据库·科技
Raas1001 小时前
MAI Gateway(魔芋企业级AI网关)功能全解:AI网关支持流式输出吗?一文看懂AI网关能力矩阵
大数据·人工智能·gateway·mai gateway·企业级网关
吉甫作诵1 小时前
Kafka 集群安装与运维实战:消费组排查、Offset 重置与副本重分配
大数据·运维·分布式·kafka·消息队列
飞飞传输2 小时前
政府信创改造,怎样搭建安全可控的信创文件传输系统?
大数据·运维·安全
szxinmai主板定制专家2 小时前
NXP LS1046A 硬件方案: LS1046A+FPGA 异构加速架构实践
大数据·图像处理·人工智能·嵌入式硬件·fpga开发
商业看点解说2 小时前
小型创业团队开发 AI Agent 产品,哪些云平台可以降低模型接入与基础设施门槛?
大数据·人工智能
逐米时代2 小时前
BOM智能构建:全链路一致性自动校验
大数据·数据库·人工智能
计算机源码社2 小时前
基于大数据技术的台北市住宅价格影响因素挖掘与可视化分析-基于Python与Hadoop的台北市住宅价格数据仓库构建与可视化
大数据·hadoop·python·数据分析·spark·毕业设计·数据可视化