跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Flink History Server:集群停止后查看历史作业 Web UI 与 REST 接口

Flink History Server 用于在 JobManager 关闭后查看已完成作业的状态与指标。其机制是 JobManager 将归档信息写入共享文件系统,History Server 轮询该目录并提供 Web UI 与 REST API。配置时需同步 JobManager 的归档路径与 History Server 的监控路径,并注意对象存储插件安装、本地缓存清理及日志跳转模板的有效性。生产环境应关注存储权限、轮询间隔对性能的影响,确保归档目录稳定可访问。

zhang发布于 2026/4/8更新于 2026/10/1989 浏览

1. 为什么需要 History Server

在生产环境中,我们常遇到这样的困境:一旦集群关闭,Web UI 上的作业页面就消失了,再也无法回看 DAG 图、算子指标、异常堆栈或当时的配置信息。这时候,History Server 的价值就体现出来了。

它不仅能展示 JobManager 归档下来的已完成作业状态,还能提供统一的'历史作业'入口,方便上线前后对比或参数变更复盘。更重要的是,它支持对接外部系统,通过 API 拉取作业归档数据,满足监控、运维或审计平台的需求。

2. 核心工作机制

整个链路其实很清晰:JobManager 负责'归档',History Server 负责'展示'。

当作业结束时,JobManager 会把归档信息写入文件系统目录(可以是 HDFS 或对象存储)。History Server 作为独立进程,定期轮询这个目录,发现新归档就下载到本地缓存,然后对外提供 Web UI 和 REST API 查询。

这里有个关键点:归档目录必须是共享文件系统。如果用对象存储(如 S3/OSS/GCS/Azure),记得提前安装对应的 Flink filesystem 插件。

3. 启停方式与默认端口

History Server 目前只能以 standalone 方式运行,用脚本管理即可:

# 启动或停止 HistoryServer
bin/historyserver.sh start|start-foreground|stop

默认绑定 localhost,监听端口是 8082。

4. 核心配置:两端都要配

4.1 JobManager 侧:指定归档位置

在 Flink 配置文件中设置归档目录,作业结束后会自动上传到这里:

# Directory to upload completed job information
jobmanager.archive.fs.dir: hdfs:///completed-jobs
4.2 History Server 侧:监控与缓存

History Server 需要知道去哪里找文件,以及缓存在哪:

# Monitor the following directories for completed jobs
historyserver.archive.fs.dir: hdfs:///completed-jobs

# Refresh every 10 seconds
historyserver.archive.fs.refresh-interval: 10000

# Local cache directory for downloaded archives
historyserver.web.tmpdir: /path/to/local/tmpdir

注意:

  • historyserver.archive.fs.dir 支持逗号分隔多个目录,适合多集群汇总。
  • refresh-interval 太小会增加 FS 压力,太大则历史作业更新慢,一般 10s~60s 根据规模调整。
  • web.tmpdir 是本地缓存,归档多了容易膨胀,要注意磁盘清理策略。

5. 日志集成:打通排障闭环

Flink 本身不归档日志,但 History Server 可以生成日志 URL 模板,点击直接跳转到你们已有的日志系统:

# HistoryServer will replace <jobid> with the relevant job id
historyserver.log.jobmanager.url-pattern: http://my.log-browsing.url/<jobid>

# HistoryServer will replace <jobid> and <tmid>
historyserver.log.taskmanager.url-pattern: http://my.log-browsing.url/<jobid>/<tmid>

建议把这里对接到日志检索入口,形成'指标页 → 日志页'的闭环体验。

6. REST API:用 JSON 接入平台

所有请求形如 http://hostname:8082/。常用接口包括 /config、/jobs/overview、/jobs/ 及其下的异常、配置、顶点信息等。

几个常用的 curl 示例:

# 查看历史作业总览
curl http://historyserver:8082/jobs/overview

# 查看某个作业异常
curl http://historyserver:8082/jobs/<jobid>/exceptions

# 查看执行计划(DAG)
curl http://historyserver:8082/jobs/<jobid>/plan

# 查看算子的 subtask 执行耗时
curl http://historyserver:8082/jobs/<jobid>/vertices/<vertexid>/subtasktimes

7. 生产最佳实践与常见坑

  1. 归档目录要稳定且权限正确 多 JM/TM 节点都要能访问,尤其是 HDFS 或对象存储。权限问题是导致'归档写不进去/HistoryServer 读不到'的最常见原因。

  2. 对象存储插件不能少 如果路径是 s3://、oss:// 等,必须确保对应插件 jar 在 plugins 中并正确配置凭证。

  3. 规划本地缓存容量 History Server 会把归档下载到本地缓存,长期运行且归档多时,需要磁盘容量与清理策略。如果归档目录按天分区,也可以通过目录规划降低单目录压力。

  4. 轮询间隔按需调整 作业量大时过于频繁会对存储造成额外压力;作业量小但需要快速可见性(如发布验证),可以缩短 interval。

  5. 日志跳转模板要真实可用 最好在日志平台侧做 jobId/tmId 维度的索引或查询预置,否则跳过去仍然找不到日志。

目录

  1. 1. 为什么需要 History Server
  2. 2. 核心工作机制
  3. 3. 启停方式与默认端口
  4. 启动或停止 HistoryServer
  5. 4. 核心配置:两端都要配
  6. 4.1 JobManager 侧:指定归档位置
  7. Directory to upload completed job information
  8. 4.2 History Server 侧:监控与缓存
  9. Monitor the following directories for completed jobs
  10. Refresh every 10 seconds
  11. Local cache directory for downloaded archives
  12. 5. 日志集成:打通排障闭环
  13. HistoryServer will replace <jobid> with the relevant job id
  14. HistoryServer will replace <jobid> and <tmid>
  15. 6. REST API:用 JSON 接入平台
  16. 查看历史作业总览
  17. 查看某个作业异常
  18. 查看执行计划(DAG)
  19. 查看算子的 subtask 执行耗时
  20. 7. 生产最佳实践与常见坑

更多推荐文章

查看全部
  • 微信小程序 webview postmessage 通信指南
  • C++ 算法刷题:平方数、分组与拓扑排序
  • OpenAI COO 访谈:大模型时代企业如何落地应用
  • 冻结语言模型参数进行 Prompt 微调的技术解析
  • OpenClaw 集成 GitHub Copilot GPT-5.4 技术修复指南
  • Web SSTI 模板注入漏洞利用与绕过技巧详解
  • Flutter 三方库 Bavard 在 OpenHarmony 端的适配实践与协议设计
  • Clawith 开源多 Agent 协作平台:原理与部署实战
  • Qwen3.5-4B 微调实战:LLaMA-Factory 打造医疗 AI 助手
  • 基于无人机搭载摄像头网络的交互式监控分布式方法
  • VS Code 中切换或退出 GitHub Copilot 账号的方法
  • 深入解析 LRU 与 LFU 缓存算法原理及实现
  • 国内大型语言模型研发进展与突破性应用
  • Arduino BLDC 模糊动态任务调度机器人
  • Linux 终端快捷键与历史命令使用指南
  • 国内外主流聚合 AI 大模型 API 平台实测对比
  • SpringBoot 配置优先级、Bean 作用域与自动配置机制
  • LLaMA-Factory 微调 Qwen3-VL 详细流程
  • FPGA PCIe XDMA 无法 Link Up 问题排查与 LTSSM 状态机定位
  • Neo4j Aura Agent 全面上线:图谱驱动的大模型智能体构建平台

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online