适用范围与版本边界
本文是 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 表示仍在进行,不能交付停机。DECOMMISSIONED 与 IN_MAINTENANCE 不应互相替代;维护可能按较低的冗余条件放行,并有超时返回服务机制。状态定义见 DataNode 管理指南。
第五步:对不收敛情况做有限范围定位
如果退役长时间无进展,先依据已定位文件或块做详细检查:
hdfs fsck "$OPS_HDFS_PATH" -files -blocks -locations此输出可能很大,仅对已确认的小范围路径执行,不能直接换成根目录。按证据判断:剩余目标不足则核对容量、机架或存储策略;特定节点持续失败则关联节点磁盘与网络;打开文件阻塞则交给业务;NameNode 处理能力下降则暂停扩大检查并协调控制面负责人。不要为追求进度而降低副本、强制退出安全模式或并行发起全量均衡。
副本重建会使用带宽与 IO,因此判断“卡住”必须考虑实际恢复速度、业务高峰和调度策略,不采用通用的固定完成时长。恢复量持续增长且服务指标恶化时,视为新的风险,而不只是等待时间变长。
验收与交付停机门槛
交付前由两人复核每个目标节点状态确实完成退役、身份无误,确认没有新增缺失或损坏块,冗余与放置异常得到解释,剩余节点容量和业务延迟满足本次批准标准。代表性文件可由业务使用已有只读校验方式核验;fsck 检查元数据和块状态,不能替代业务可读性与内容校验。
完成退役不等于数据盘可以立即销毁。停机、资产回收与擦除是后续独立授权动作;需保留规定的观察期、恢复来源和审计材料。本清单只给出核验结果,不自动批准后续动作。
停止与恢复边界
出现新缺失块、剩余节点连续失联、故障域冗余不足、业务延迟超限或审批对象不一致,立即停止扩大退役批次并升级给变更负责人。暂停此清单只会停止查询,不会撤销已经生效的退役状态。若决定取消退役,必须由负责人按实际主机提供器恢复配置、重新加载并确认重新入服;只重启 DataNode 不代表完成重新接纳。
只读核验本身没有数据回滚。尚未停机时仍应保留原数据与服务;停机后恢复必须考虑磁盘完整性、版本、网络身份和当前块分布,不能把旧节点重新接入视为天然安全。已经擦除的数据不能靠恢复主机列表找回。
案例证据记录模板
- 变更编号、Hadoop 版本、nameservice、目标节点与资产映射:待填。
- 初始失联、缺失块、欠副本、容量、机架与存储策略:待填。
- 每轮采样时间、退役状态、恢复趋势、阻塞文件和业务影响:待填。
- 停止触发情况、负责人决策、配置版本及授权动作记录:待填。
- 最终核验、双人复核、观察期与是否准许交付停机:待负责人填写。
没有实际执行证据时,所有完成项保持未验证,不以示例状态充当验收结果。