大数据运维 · 高级

Hadoop 集群运维

结合 HDFS 块健康、节点容量与 YARN 队列证据,建立巡检、监控、单节点维护和恢复验收流程。

Hadoop大数据监控告警

场景目标

建立覆盖 NameNode、JournalNode、ResourceManager 与工作节点的巡检清单;对容量、块健康和队列至少各保存一份带时间戳的证据;在数据冗余和队列容量满足条件时完成一个非核心节点的受控维护,验证关键作业、数据读取和冗余恢复,并交接未关闭风险。

环境要求

按实际 Hadoop 3.x 发行版核对命令、JDK 和管理接口;记录 HDFS HA、JournalNode、ZooKeeper 及 YARN 调度器配置,发行版扩展需使用对应文档。准备只读巡检身份、必要的节点管理权限和有效的 Kerberos 票据;确认机架分布、可用副本、队列余量以及单节点退出后的重复制空间。保存核心配置、节点清单、元数据备份与已验证的数据恢复记录,不把副本当作独立备份。窗口避开关键批次作业,单节点试点需要数据与计算负责人在线。预计 300 分钟覆盖首轮巡检和小范围维护,不含采购、集群扩容、大规模重复制与长周期容量观察。

参考架构 · 非实时拓扑

HDFS 存储与 YARN 计算的双层架构

把 HDFS 元数据、数据块与 YARN 资源调度分开阅读:客户端直接读写 DataNode,作业由 ApplicationMaster 协调执行;维护需要同时满足数据副本和队列容量条件。

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

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

HDFS 存储与 YARN 计算的双层架构:组件关系图把 HDFS 元数据、数据块与 YARN 资源调度分开阅读:客户端直接读写 DataNode,作业由 ApplicationMaster 协调执行;维护需要同时满足数据副本和队列容量条件。 作业与数据客户端 → NameNode:查询元数据;作业与数据客户端 → DataNode 组:直接读写数据块;NameNode → DataNode 组:块管理指令;作业与数据客户端 → ResourceManager:提交应用;ResourceManager → ApplicationMaster:分配容器资源;ApplicationMaster → NodeManager 组:协调任务执行;Prometheus → NameNode:采集存储状态;Prometheus → ResourceManager:采集队列状态;Grafana → Prometheus:查询趋势。箭头说明见下方流向解读。
逻辑参考图,只展开现有集群的核心职责;主备、JournalNode、机架与副本实例未全部展开,不代表真实部署或维护已验证。

NameNode

控制 / 治理

表示当前有效的 HDFS 元数据入口;实际主备和 JournalNode 健康必须核对。SecondaryNameNode 不能被当作热备。

查看关联工具
全部组件职责 8 个组件
NameNode
表示当前有效的 HDFS 元数据入口;实际主备和 JournalNode 健康必须核对。SecondaryNameNode 不能被当作热备。工具介绍 NameNode
DataNode 组
保存数据块并服务客户端读写,副本和机架放置需按真实拓扑核对;节点退出前评估剩余可用副本。工具介绍 DataNode 组
作业与数据客户端
客户端查询 HDFS 元数据后直接访问 DataNode;YARN 应用提交走独立计算控制路径,不把所有流量都画成经过 NameNode。
ResourceManager
管理计算资源与队列分配;排队还可能受用户配额和请求规格影响,不能仅用总体 CPU 判断。工具介绍 ResourceManager
ApplicationMaster
为本应用申请资源、跟踪任务,并与 NodeManager 协调容器执行;任务管理不由全局调度器单独承担。
Grafana
将主备、容量、块健康和排队原因关联到同一时间范围,给值班人员保留原生命令核对入口。工具介绍 Grafana
Prometheus
通过已验证的指标适配端点采集控制面、存储、计算和关键作业信号;图中仅展示核心入口观测。工具介绍 Prometheus
NodeManager 组
在计算节点管理任务容器及资源状态,维护前应按所选版本流程排空或退出调度,不能只停止进程。工具介绍 NodeManager 组
流向解读 9 条连接
  1. 1

    作业与数据客户端 NameNode

    控制 / 管理 · 查询元数据

    客户端请求文件与块位置元数据,业务数据块本身不流经 NameNode。

  2. 2

    作业与数据客户端 DataNode 组

    数据 / 请求 · 直接读写数据块

    客户端根据元数据访问 DataNode;图中聚合多个数据节点,未展开具体写入复制管线。

  3. 3

    NameNode DataNode 组

    控制 / 管理 · 块管理指令

    NameNode 管理块放置与复制,DataNode 心跳、块报告等返回关系在此简化省略。

  4. 4

    作业与数据客户端 ResourceManager

    控制 / 管理 · 提交应用

    作业提交进入 YARN 控制路径,需核对队列、配额、资源请求和业务窗口。

  5. 5

    ResourceManager ApplicationMaster

    控制 / 管理 · 分配容器资源

    ApplicationMaster 请求资源后由 ResourceManager 返回分配结果,本连线强调调度职责。

  6. 6

    ApplicationMaster NodeManager 组

    控制 / 管理 · 协调任务执行

    ApplicationMaster 与获分配节点的 NodeManager 协调启动及监控任务容器。

  7. 7

    Prometheus NameNode

    观测 / 查询 · 采集存储状态

    通过实际启用的端点或适配器观测角色、容量和块健康,并与原生命令抽样比对。

  8. 8

    Prometheus ResourceManager

    观测 / 查询 · 采集队列状态

    观测队列和应用状态,采集失败与真实资源不足分别呈现。

  9. 9

    Grafana Prometheus

    观测 / 查询 · 查询趋势

    查询存储与计算侧同时间段趋势,为单节点维护提供可复核证据。

从架构到实施

  1. 01

    分别建立存储与计算基线

    先确认主备和故障域,再检查 HDFS 块、容量与 YARN 节点、队列;两侧条件都满足才具备维护前提。

  2. 02

    让分层指标支撑有界巡检

    把核心角色、存储、计算与作业关联起来,固化只读巡检的范围、并发和超时,不自动触发高风险修复。

  3. 03

    单节点退出后逐项确认收敛

    协调计算退出与数据副本条件,维护后检查重新注册、块报告和关键作业,再交接仍在收敛的风险。

故障域与操作边界

一个物理节点可能同时影响两层

DataNode 与 NodeManager 共置时,退出节点会同时减少存储副本与计算容量;不能只看磁盘健康或只看队列资源。

核心角色不明时停止维护

图中未展开的主备、JournalNode 和机架关系仍是前置条件。同故障域不可并行维护,副本或调度不满足时不能强制退出。

副本和快照不是独立备份

数据删除、逻辑损坏与整个故障域受损需要独立恢复路径;全量 fsck、均衡和退役还需另行评估负载。

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

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

方案说明

适用架构

适用于已有 HDFS 与 YARN、具备明确主备角色和节点责任人的 Hadoop 集群。以 Hadoop 原生命令和管理接口采集事实,Prometheus 与 Grafana 汇总运行趋势,Ansible 执行审阅过的只读巡检与单节点维护任务。

不适用边界

不用于新建集群、直接修复损坏文件或在主备状态不明时强制切换。HDFS 副本和快照不等于异地备份,安全模式也不是可随意关闭的故障开关。大目录的全量 fsck、均衡和批量退役可能产生额外负载,应按独立窗口和容量评估执行。

全局验收

核心角色和故障域清晰,缺失块与损坏文件均有解释和处置工单,容量及队列异常可关联到节点或作业;一次非核心单节点维护结束后,副本、调度、关键作业与告警恢复至约定范围,记录每项实际耗时和业务影响。

配套知识

官方参考

工具编排

4 个关联工具
  1. Hadoop存储与调度状态来源提供 HDFS 角色、容量与块健康,以及 YARN 节点、队列和应用状态,作为巡检的原始依据。
  2. Prometheus运行趋势与异常采集通过已验证端点采集角色、JVM、RPC、块状态与队列指标,持续观察维护影响。
  3. Grafana分层巡检看板按控制面、存储、计算与作业展示趋势,保留节点和队列入口及维护时间范围。
  4. Ansible受控巡检与单节点维护使用明确 inventory 和有限并发汇总只读结果;经过试点的维护任务逐节点执行。

实施步骤

共 7 步
  1. 01

    核对核心角色与维护前提

    确认集群逻辑名称、HDFS 主备、JournalNode 和 YARN 主备角色,核对节点、机架、磁盘及调度器清单,避免将 SecondaryNameNode 误认为热备。记录最近变更、关键作业窗口、数据负责人和备份位置,检查管理身份与票据有效性。先明确可维护的非核心节点及禁止同时操作的故障域,主备状态或仲裁组件异常时暂停维护,优先处理控制面健康。

    验证标准

    资产清单与实际角色一致,管理入口、票据和必要权限可用;核心作业及数据有负责人,备份记录可定位。试点节点不承载未识别的核心角色,维护前不存在未说明的主备或仲裁异常。

    停止与回退

    此阶段只核对清单,不切换主备或重启服务。若角色、故障域或恢复资料不完整,取消本次节点维护并补齐证据;发现控制面故障时转入相应预案,保留当前状态供协同排查。

    返回步骤起点
  2. 02

    检查 HDFS 容量与块健康

    先读取集群与 DataNode 容量报告,区分总可用空间、节点倾斜及非 HDFS 占用,再查看丢失块、副本不足和退役状态。路径检查只选已确认的小范围关键目录,低峰运行并限制频率;示例路径需替换为实际获准目录。下列命令不含修复选项,不能附加删除、移动或触发重复制参数,也不要未经评估直接扫描整个命名空间。

    hdfs dfsadmin -report
    hdfs fsck /data/approved-sample -files -blocks
    验证标准

    报告覆盖预期 DataNode,集群总量与节点明细可以解释;关键路径读取与块检查结果已保存。缺失块、副本不足及严重容量倾斜均有处置结论,单节点维护后的余量满足预定安全边界。

    停止与回退

    检查耗时或 NameNode 负载异常时停止本轮扫描并缩小路径,保留已完成输出。发现块丢失时停止维护,不运行删除或修复命令掩盖问题;由数据负责人确认可用副本与恢复路径。

    返回步骤起点
  3. 03

    定位 YARN 节点与队列瓶颈

    结合 NodeManager 健康、队列容量和应用状态判断计算侧风险,区分节点离线、队列上限、用户配额、资源请求过大与容器启动失败。应用处于 ACCEPTED 不等同于计算资源整体耗尽,应核对其队列、资源请求和调度诊断。以下只读命令用于建立节点与应用基线,选择具体应用后再检查诊断与脱敏日志,不在巡检阶段批量终止作业。

    yarn node -list -all
    yarn application -list -appStates ACCEPTED,RUNNING
    验证标准

    关键应用、队列和节点健康能相互对应,排队应用具有可解释的调度原因;试点节点退出后的剩余资源满足关键作业需要。保留应用标识、队列水位和诊断时间,避免只记录总 CPU 使用率。

    停止与回退

    此步骤不修改队列或终止应用,查询异常时停止高频采集并使用已有管理界面核对。若队列已满或关键作业存在失败风险,取消节点维护,由调度与作业负责人先处置资源问题。

    返回步骤起点
  4. 04

    建立分层指标与巡检告警

    按控制面、存储、计算、关键作业四层接入已验证指标端点,核对采集账号和接口暴露范围。看板关联主备角色、JVM 与 RPC、容量和块健康、队列等待与作业失败,同时观察采集器自身状态。每项告警附上节点、队列或作业入口,缺失块和核心角色异常优先升级;容量阈值结合增长率和维护所需余量设定,不直接照搬固定百分比。

    验证标准

    各层关键指标连续更新,并与原生命令同时间段抽样一致;采集失联与真实服务异常可区分。告警责任组、处置入口和升级条件完整,维护时段能从看板还原节点与队列变化。

    停止与回退

    新增采集影响核心角色时撤回最近端点与频率调整,恢复既有规则和看板。保持原有关键告警可用,不以静默整套集群监控代替维护降噪;指标无法解释时先修正来源再继续。

    返回步骤起点
  5. 05

    固化有界巡检与处置顺序

    将已核对的只读检查整理为 Ansible 任务,设置目标分组、有限并发、单条超时和失败汇总,避免全节点同时执行高开销命令。巡检先检查核心角色,再看存储与节点,最后关联队列和关键作业;每项输出带主机和时间,认证信息不进入报告。对容量逼近、磁盘故障、副本不足和队列积压分别指定处置手册,涉及删除、均衡或退役的动作独立审批和试点。

    验证标准

    单节点执行结果与人工检查一致,批次没有写操作和失控并发;每个异常能追踪到原始证据及责任组。超时和权限失败被标为未完成,而非健康,巡检不会自动执行高风险修复。

    停止与回退

    发现负载、范围或输出异常时停止后续批次并收集已运行任务,恢复本次调整的采集频率。只读检查不应更改服务状态;若发现任务带有副作用,停用该任务并核对受影响节点。

    返回步骤起点
  6. 06

    实施单节点受控维护

    在数据健康、剩余副本与队列容量确认后,选择一个非核心节点,按本发行版支持的维护或退役流程逐步退出服务。先协调 NodeManager 排空或迁移作业,再核实 DataNode 对副本和数据可用性的影响;不能仅因超时就强制停止未满足退出条件的节点。完成计划维护后逐项恢复服务,观察节点重新注册、块报告、容器调度和关键作业,期间不并行维护同故障域其他节点。

    验证标准

    节点退出前满足约定的数据与作业条件,过程未新增不可解释的缺失块;恢复后节点身份、块报告与调度状态正常。关键路径可读,关键作业状态和告警恢复,实际维护影响有完整记录。

    停止与回退

    退出条件未满足时取消维护并保持节点在线;已退出后按原配置恢复该节点服务与调度资格。若副本或队列不能收敛,停止后续维护并优先保全数据,不强制离开安全模式或批量重启。

    返回步骤起点
  7. 07

    复核冗余与日常交接

    重复核心角色、HDFS 与 YARN 的相同检查,对比维护前后容量、块状态、节点健康和关键作业,观察重复制或积压是否仍在收敛。将短时通过项与需高峰或次日批次确认的项目分别记录,交接巡检频率、阈值依据、恢复入口和未关闭风险。依据实际增长规划扩容或数据治理,并约定下次单节点维护前必须重新评估副本与计算余量。

    验证标准

    维护前后证据可对应,未收敛项目具有趋势、责任人与截止时间;核心角色和关键作业无新增未解释异常。接班人员能从报告定位到节点或应用,并找到维护恢复步骤与备份记录。

    停止与回退

    验收未通过时保持当前已恢复节点在线并冻结后续维护,按具体异常恢复最近单项配置。数据或副本问题交由恢复预案处理,不以回滚全量配置替代数据检查,完成复核后再重新排期。

    返回步骤起点

DOUYA OPS ECOSYSTEM

体验豆芽自研工具与场景能力

部分场景提供体验环境,用于功能验证、测试和技术交流。