标准流程 · 大数据运维

待环境验证

HDFS DataNode 下线前后安全核验

为 DataNode 退役检查节点身份、容量与故障域、块恢复和阻塞文件,明确何时可以交付停机以及必须暂停的条件。

Hadoop大数据监控告警高可用
阅读导引 · 理解后再操作

这篇知识解决什么问题

DataNode 下线核验围绕三个门槛展开:目标身份与退役审批一致,剩余节点能够满足数据放置,最终状态与业务证据允许交付停服。把退役进行中、完成退役、临时维护和磁盘销毁分开理解,避免因为报告出现一个状态就提前失去数据来源。

退役资格取决于剩余落点而非全群空闲

目标节点退出后,数据仍需满足对应的机架、存储类型和副本或纠删码策略。应扣除并行维护与业务增长影响,再判断哪些节点实际可接收数据。只比较总空闲与目标使用量不足以证明可退役,已经存在的缺失块或故障域风险应先交由负责人复核。

完成状态与后续处置授权不能合并

NameNode 报告用于判断退役状态,但交付停机还需核验数据健康、业务读取和同机服务范围。完成退役不自动授权清盘或资产销毁,取消退役也不等于简单重启后立即入服。每个阶段应保留精确节点身份、决策人和仍需观察的恢复条件。

进入文章正文
关联架构图解6 个组件 · 点击展开

参考图把审批、配置分发与 NameNode 管理放在控制路径,把 DataNode 之间的块重建单独展示。本篇只核验图中过程的既有状态,不执行刷新或停服;图未展开全部副本来源、纠删码条带及同机 NodeManager 的排空。

查看场景架构与实施步骤
参考架构 · 非实时拓扑

HDFS 退役控制与副本重建架构

由 NameNode 调度退役,块数据在 DataNode 之间复制;配置分发、业务读写和健康观测各自独立,复制完成后才进入精确停服。

  • 数据 / 请求
  • 控制 / 管理
  • 观测 / 查询

点击组件,在图下方查看职责;连线编号对应流向解读。小屏可横向滚动,或直接展开文字说明。

HDFS 退役控制与副本重建架构:组件关系图由 NameNode 调度退役,块数据在 DataNode 之间复制;配置分发、业务读写和健康观测各自独立,复制完成后才进入精确停服。 变更负责人 → Ansible:批准配置;Ansible → NameNode:分发并受控刷新;NameNode → 待退役 DataNode:管理退役状态;NameNode → 在服 DataNode:调度副本放置;待退役 DataNode → 在服 DataNode:块副本重建;NameNode → Prometheus:状态指标;在服 DataNode → Prometheus:容量与负载。箭头说明见下方流向解读。
逻辑参考图,以 Hadoop 3.4.2 为阅读基准;节点数量、机架及监控接入待现场确认,不表示已部署或已完成退役。

变更负责人

入口 / 来源

确认目标存储身份、机架余量、同机计算服务及停止条件;退役批准不包含擦盘授权。

全部组件职责 6 个组件
变更负责人
确认目标存储身份、机架余量、同机计算服务及停止条件;退役批准不包含擦盘授权。
Ansible
将已审阅的 host provider 配置分发到相关 NameNode,保持 HA 配置一致,不同时停止 DataNode。工具介绍 Ansible
NameNode
读取退役配置、核对块放置并管理重建过程;NameNode 不承载客户端的实际块数据传输。工具介绍 NameNode
待退役 DataNode
提供仍需读取的块副本,直到正式退役完成;已有其他健康副本也可能成为复制来源。工具介绍 待退役 DataNode
在服 DataNode
接收按复制或纠删码策略重建的数据,逐机架和存储类型核对空间,不只看全局剩余容量。工具介绍 在服 DataNode
Prometheus
复用已验证的 Hadoop 指标链路,观察复制队列、缺失块、容量及业务影响;未接入项明确标为缺口。工具介绍 Prometheus
流向解读 7 条连接
  1. 1

    变更负责人 Ansible

    控制 / 管理 · 批准配置

    审批绑定精确节点集合、配置差异和分发目标。

  2. 2

    Ansible NameNode

    控制 / 管理 · 分发并受控刷新

    先核对各 NameNode 配置一致,再由获准身份按 HA 约定刷新节点配置。

  3. 3

    NameNode 待退役 DataNode

    控制 / 管理 · 管理退役状态

    退役中不是已完成;只有管理状态及块健康验收通过才能停服。

  4. 4

    NameNode 在服 DataNode

    控制 / 管理 · 调度副本放置

    控制关系表达目标选择,不表示块数据经过 NameNode。

  5. 5

    待退役 DataNode 在服 DataNode

    数据 / 请求 · 块副本重建

    示意从可用副本向剩余节点复制;实际来源和链路由集群调度。

  6. 6

    NameNode Prometheus

    观测 / 查询 · 状态指标

    退役状态与复制队列进入已有采集链路,和管理查询交叉核对。

  7. 7

    在服 DataNode Prometheus

    观测 / 查询 · 容量与负载

    观察剩余存储、网络和业务周期,超出预算停止扩大批次。

故障域与操作边界

退役与维护模式不同

不能用暂时离线或进入退役中代替 Decommissioned;存在丢块、放置约束不满足或异常安全模式时停止。

计算与数据保留分别处理

HDFS 退役不会自动排空 NodeManager 和同机业务;保留数据目录、配置与日志,磁盘清理需独立审批。

重新入服仍需验证

恢复配置和服务后还需等待块报告、重新接纳与副本健康检查,不能承诺瞬时回退。

架构依据与版本核对 1 篇官方资料

图解是本站基于官方资料整理的逻辑参考;实施前仍需核对实际部署版本、组件支持范围与变更审批。

适用范围与版本边界

本文是 Hadoop DataNode 退役操作的只读核验清单,覆盖审批前、已批准退役进行中以及交付停机前后的证据,不会执行退役或停机。命令按 Apache Hadoop 3.4.2 文档核对,其他 3.x 发行版应先检查实际命令帮助、厂商补丁和主机提供器配置。纠删码目录与普通副本目录分开核验,不能把复制因子三的假设用于所有文件。本文尚未在实际集群验证。

前提:明确目标与审批边界

变更单应列出 nameservice、目标 DataNode 的主机名、地址、节点标识、机架、数据盘及资产编号,指定业务窗口、批次数量和验收负责人。明确这是长期退役还是临时维护;临时维护状态与完成退役不是同一门槛。运维必须能读取 NameNode 报告、相关配置与业务目录,认证使用现有 Kerberos 或其他受控机制,不打印票据或密钥内容。

检查人员先复核审批对象与命令目标一致,保持 DataNode 服务和数据盘不变。下列命令均为读取,不包含 -refreshNodes、停止进程、修改排除文件或删除块文件。

第一步:确认连接的集群与初始健康

hdfs version
hdfs getconf -confKey fs.defaultFS
hdfs dfsadmin -safemode get
hdfs dfsadmin -report
hdfs dfsadmin -printTopology

将报告中的存活、失联、退役与维护节点和资产清单对齐。fs.defaultFS 若指向 ViewFS 或路由器,还需根据现有挂载配置确定实际 nameservice,不能把一个逻辑入口当成所有后端都已核验。安全模式、已有缺失块、持续失联节点或正在进行的重大恢复都应触发审批复核,而不是直接开始下一批退役。

第二步:核对退役后的可放置空间

使用报告记录目标节点使用量、剩余节点可用容量、机架与存储类型,结合既有监控评估业务增长和重复制带宽。集群总剩余空间大于目标节点使用量只是粗略必要检查,不能证明所有块都能满足放置策略。必须排除同机架集中退役、仅存特定存储类型节点不足、热数据高水位及并行维护等限制。

对代表性且范围受控的数据目录核对策略:

OPS_HDFS_PATH='/REPLACE_WITH_CONFIRMED_DATASET_PATH'
hdfs ec -getPolicy -path "$OPS_HDFS_PATH"
hdfs storagepolicies -getStoragePolicy -path "$OPS_HDFS_PATH"
hdfs fsck "$OPS_HDFS_PATH"

先由目录负责人确认路径规模,再选择抽查范围。EC 条带的数据块和校验块分布需按实际策略检查,不把普通副本数量作为唯一指标。初始检查结果要保存为基线,避免把历史欠副本算成此次退役新问题。HDFS 命令指南 说明这些只读参数。

第三步:确认配置表达的是同一个目标

hdfs getconf -confKey dfs.namenode.hosts.provider.classname
hdfs getconf -confKey dfs.hosts
hdfs getconf -confKey dfs.hosts.exclude

这些读取反映当前客户端加载的配置,不自动证明 NameNode 服务端已经采用同一份文件。应通过受控的配置管理记录比对 NameNode 实际版本、配置路径和变更 diff。传统主机列表与 JSON CombinedHostFileManager 的状态表达不同,不将两种格式混用,也不根据客户端返回路径直接覆盖服务端文件。

只读核验时记录配置中的目标和审批清单是否一致,以及是否存在未审批的其他节点。更新配置及触发 NameNode 重新加载属于另一项已审批写操作,应由变更负责人执行并提供结果证据。

第四步:观察已批准退役的收敛过程

hdfs dfsadmin -report -decommissioning
hdfs dfsadmin -listOpenFiles -blockingDecommission -path "$OPS_HDFS_PATH"
hdfs fsck "$OPS_HDFS_PATH" -maintenance

仅在退役已由负责人发起后读取进度。比较固定时间窗口内待恢复块、退役状态与业务读写延迟,避免秒级重复全量扫描。阻塞退役的打开文件需要联系业务所有者确认写入生命周期;本流程不强制关闭文件、不终止任务,也不随意恢复租约。

DECOMMISSION_INPROGRESS 表示仍在进行,不能交付停机。DECOMMISSIONEDIN_MAINTENANCE 不应互相替代;维护可能按较低的冗余条件放行,并有超时返回服务机制。状态定义见 DataNode 管理指南

第五步:对不收敛情况做有限范围定位

如果退役长时间无进展,先依据已定位文件或块做详细检查:

hdfs fsck "$OPS_HDFS_PATH" -files -blocks -locations

此输出可能很大,仅对已确认的小范围路径执行,不能直接换成根目录。按证据判断:剩余目标不足则核对容量、机架或存储策略;特定节点持续失败则关联节点磁盘与网络;打开文件阻塞则交给业务;NameNode 处理能力下降则暂停扩大检查并协调控制面负责人。不要为追求进度而降低副本、强制退出安全模式或并行发起全量均衡。

副本重建会使用带宽与 IO,因此判断“卡住”必须考虑实际恢复速度、业务高峰和调度策略,不采用通用的固定完成时长。恢复量持续增长且服务指标恶化时,视为新的风险,而不只是等待时间变长。

验收与交付停机门槛

交付前由两人复核每个目标节点状态确实完成退役、身份无误,确认没有新增缺失或损坏块,冗余与放置异常得到解释,剩余节点容量和业务延迟满足本次批准标准。代表性文件可由业务使用已有只读校验方式核验;fsck 检查元数据和块状态,不能替代业务可读性与内容校验。

完成退役不等于数据盘可以立即销毁。停机、资产回收与擦除是后续独立授权动作;需保留规定的观察期、恢复来源和审计材料。本清单只给出核验结果,不自动批准后续动作。

停止与恢复边界

出现新缺失块、剩余节点连续失联、故障域冗余不足、业务延迟超限或审批对象不一致,立即停止扩大退役批次并升级给变更负责人。暂停此清单只会停止查询,不会撤销已经生效的退役状态。若决定取消退役,必须由负责人按实际主机提供器恢复配置、重新加载并确认重新入服;只重启 DataNode 不代表完成重新接纳。

只读核验本身没有数据回滚。尚未停机时仍应保留原数据与服务;停机后恢复必须考虑磁盘完整性、版本、网络身份和当前块分布,不能把旧节点重新接入视为天然安全。已经擦除的数据不能靠恢复主机列表找回。

案例证据记录模板

  • 变更编号、Hadoop 版本、nameservice、目标节点与资产映射:待填。
  • 初始失联、缺失块、欠副本、容量、机架与存储策略:待填。
  • 每轮采样时间、退役状态、恢复趋势、阻塞文件和业务影响:待填。
  • 停止触发情况、负责人决策、配置版本及授权动作记录:待填。
  • 最终核验、双人复核、观察期与是否准许交付停机:待负责人填写。

没有实际执行证据时,所有完成项保持未验证,不以示例状态充当验收结果。

相关站内内容

参考资料

从现象到判断

先收集证据,再缩小范围。以下是判读路径,不代表已经确认根因或获准变更。

  1. 审批清单与报告中的节点名称、地址或状态对不上,客户端配置指向逻辑入口,无法直接判断实际 nameservice。

    只读核对
    只读对照资产映射、集群入口、拓扑报告与获准服务端配置版本,核对 host provider 表达的目标,不修改主机清单。
    如何判读
    应先消除身份与配置来源歧义;客户端读取结果不证明 NameNode 已加载相同配置,对象不清时不能交付下一阶段。
  2. 退役长时间没有明显进展,已有空闲空间却迟迟无法完成,报告可能伴随特定存储类型不足或打开文件阻塞。

    只读核对
    读取固定范围内的退役状态、阻塞文件及必要块位置,对照剩余机架、存储策略、恢复趋势和业务负载。
    如何判读
    优先区分不合格落点、持续写文件和恢复吞吐;没有统一完成时长,不能据等待较久就强制停服或降低冗余。
  3. 目标状态看似接近完成,同期却出现新缺失块、剩余节点失联或业务读取异常,工单仍计划继续扩大退役批次。

    只读核对
    对照退役前基线读取新增块异常、节点变化与既有业务校验证据,核对每个目标的最终管理状态及同机服务记录。
    如何判读
    新增风险应触发暂停与审批复核;退役进行中或维护状态不能代替完成门槛,单个成功状态也不足以覆盖业务影响。
常见误区与判断边界 2 项

把维护状态当作长期退役完成

临时维护与长期退役具有不同的状态和冗余要求,不能因为节点暂时获准离线就推导可以永久移除。核验材料应明确采用哪一种流程与实际版本,并以相应完成条件判断。本篇停止查询不会撤销已生效状态,取消操作需要负责人独立执行。

退役结束即擦盘或停止同机所有服务

数据节点退役不自动排空计算任务,也不授予磁盘销毁权限。共置 NodeManager、其他业务和恢复观察期需要分别处理。应保留数据、配置和证据直到获准下一阶段;已经擦除的内容不能靠恢复主机列表或重启服务找回。

交接时应留下的证据

作为记录提纲使用,不是自动检查结果;未取得的证据应标记缺口,并注明负责人。

  • 登记变更编号、nameservice、Hadoop 版本、目标节点与资产身份、机架和数据盘,附审批清单与实际报告的一一对应。
  • 保存退役前缺失块、冗余、容量与维护基线,区分普通副本和纠删码目录,解释剩余故障域及存储类型的放置条件。
  • 按固定窗口记录退役状态、恢复进度、阻塞文件和业务影响,保存服务端配置来源与负责人的授权动作引用,不代填完成结果。
  • 交接每个目标最终核验、业务已有读取校验及同机服务状态,注明是否准许停服、观察期、未解除风险和磁盘保留要求。

记录需包含环境、版本、时间与时区;分享前脱敏,不附访问令牌、密码或完整业务敏感数据。

继续阅读与资料核对

补充相关主题,再结合当前环境的实施记录形成结论。

返回原理导读

DOUYA OPS ECOSYSTEM

贡献你的经验,帮助更多运维人

把故障复盘、标准流程和最佳实践沉淀为可检索、可复用的知识内容。