Flink History Server 集群停了也能看已完成作业的 Web UI 与 REST 数据

1. History Server 能解决什么问题

典型痛点

  • 集群关闭后,Web UI 上的作业页面消失,无法回看 DAG、算子指标、异常栈、配置
  • 需要统一的“历史作业”入口做复盘对比(上线前后、参数变更前后)
  • 需要对接外部系统(监控、运维平台、审计平台)通过 API 拉取作业归档数据

History Server 提供能力

  • 展示 JobManager 归档下来的已完成作业状态与统计信息
  • 提供 REST API(返回 JSON)便于系统集成
  • 支持跳转到你们已有的日志平台(Log Integration)

2. 工作机制:JM 负责“归档”,History Server 负责“展示”

整体链路很清晰:

1)JobManager 在作业结束时,把“作业归档信息”写到一个文件系统目录
2)History Server 定期轮询这个目录,发现新归档就下载到本地缓存
3)History Server 对外提供 Web UI 与 REST API 查询这些已归档作业

这里的关键点是:归档目录是“文件系统目录”,可以是 HDFS,也可以是对象存储(前提是你已安装对应的 Flink filesystem 插件,比如 S3/OSS/GCS/Azure 等)。

3. 启停方式与默认端口

History Server 是独立进程(目前只能 standalone 方式运行),用脚本管理:

# Start or stop the HistoryServer bin/historyserver.sh (start|start-foreground|stop)

默认绑定 localhost,端口 8082。

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

4.1 JobManager 侧:把归档写到哪里

在 Flink 配置文件里指定归档目录:

# Directory to upload completed job informationjobmanager.archive.fs.dir: hdfs:///completed-jobs 

这一步只发生在 JobManager:作业结束后把归档信息上传到该目录。

4.2 History Server 侧:监控哪些目录、多久刷新一次、缓存放哪

# Monitor the following directories for completed jobshistoryserver.archive.fs.dir: hdfs:///completed-jobs # Refresh every 10 secondshistoryserver.archive.fs.refresh-interval:10000# Local cache directory for downloaded archiveshistoryserver.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 idhistoryserver.log.jobmanager.url-pattern: http://my.log-browsing.url/<jobid># HistoryServer will replace <jobid> and <tmid> with the relevant job id and taskmanager idhistoryserver.log.taskmanager.url-pattern: http://my.log-browsing.url/<jobid>/<tmid>

建议把这里对接到你们的日志检索入口(例如按 jobId/tmId 作为查询条件或路径变量),形成“指标页 → 日志页”的闭环排障体验。

6. REST API:用 JSON 把历史作业数据接入平台

所有请求形如:

http://hostname:8082/<path>

常用接口清单(节选)

  • /config
  • /jobs/overview
  • /jobs/<jobid>
  • /jobs/<jobid>/exceptions
  • /jobs/<jobid>/config
  • /jobs/<jobid>/vertices
  • /jobs/<jobid>/vertices/<vertexid>
  • /jobs/<jobid>/vertices/<vertexid>/subtasktimes
  • /jobs/<jobid>/plan
  • /jobs/<jobid>/jobmanager/log-url
  • /jobs/<jobid>/taskmanagers/<taskmanagerid>/log-url

几个常见 curl 例子:

# 查看历史作业总览curl http://historyserver:8082/jobs/overview # 查看某个作业异常curl http://historyserver:8082/jobs/<jobid>/exceptions # 查看某个作业的执行计划(DAG/plan)curl http://historyserver:8082/jobs/<jobid>/plan # 查看某个算子的 subtask 执行耗时curl http://historyserver:8082/jobs/<jobid>/vertices/<vertexid>/subtasktimes 

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

1)归档目录要“稳定、共享、权限正确”

  • 多 JM/TM 节点都要能访问(尤其是 HDFS/对象存储)
  • 权限问题是最常见的“归档写不进去/HistoryServer 读不到”

2)对象存储要记得装 filesystem 插件

  • jobmanager.archive.fs.dir/historyserver.archive.fs.dir 如果用 s3://oss://gs://wasb:// 等路径,必须确保对应插件 jar 在 plugins 中并正确配置凭证

3)本地缓存目录要规划容量

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

4)轮询间隔要按规模调

  • 作业量大时过于频繁会对存储造成额外压力
  • 作业量小但需要快速可见性(例如发布验证),可以缩短 interval

5)日志跳转模板要与日志平台“真的能定位到”

  • 最好在日志平台侧做 jobId/tmId 维度的索引或查询预置,否则跳过去仍然找不到日志

Read more

EtherCAT同步模式实战:如何用TwinCAT配置DC-Synchronous模式(附时序图详解)

EtherCAT同步模式实战:TwinCAT配置DC-Synchronous模式全解析 工业自动化领域对运动控制的同步精度要求越来越高,EtherCAT作为实时以太网协议的代表,其DC-Synchronous(分布式时钟同步)模式能够实现纳秒级的同步精度。本文将深入探讨如何在TwinCAT环境中配置这一关键模式,帮助工程师解决实际项目中的同步挑战。 1. DC-Synchronous模式基础原理 EtherCAT的DC-Synchronous模式核心在于利用分布时钟(Distributed Clock)技术,使网络中的所有从站设备共享一个统一的系统时间基准。与传统的SM-Synchronous模式相比,DC模式最大的优势在于: * 消除主站抖动影响:从站动作基于本地时钟而非主站数据帧到达时间 * 补偿传输延迟:通过精确的时间偏移计算,抵消信号在物理线路上的传播差异 * 硬件级同步:使用SYNC信号触发从站IO动作,而非软件中断 典型的DC同步网络包含以下关键组件: 组件类型作用典型设备参考时钟(Reference Clock)提供系统时间基准第一个DC从站从站时

面向电力线场景下无人机返航任务的尺度不变逼近检测器

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID|计算机视觉研究院 学习群|扫码在主页获取加入方式 https://pmc.ncbi.nlm.nih.gov/articles/PMC11852856/pdf/biomimetics-10-00099.pdf 计算机视觉研究院专栏 Column of Computer Vision Institute 无人机为电网维护提供了高效解决方案,但返航过程中的避障问题面临跨越电力线的挑战,尤其对于计算资源有限的小型无人机而言更为突出。传统视觉系统难以检测纤细、复杂的电力线,常出现漏检或误判。尽管深度学习方法提升了图像中静态电力线的检测效果,但在动态场景下仍难以实时识别碰撞风险。 PART/1      概述    受视叶巨运动检测器(LGMD)通过检测逼近目标的连续、聚集运动轮廓,从而区分背景中稀疏、非相干运动的机制启发,本文提出一种尺度不变逼近检测器(SILD)。SILD通过视频帧预处理实现运动检测,利用注意力掩码增强运动区域,并模拟生物唤醒机制识别逼近威胁、抑制噪声;同时可预测高速飞行中

ROS2机器人编程新书推荐-2025-精通ROS 2机器人编程:使用ROS 2进行复杂机器人的设计、构建、仿真与原型开发(第四版)

ROS2机器人编程新书推荐-2025-精通ROS 2机器人编程:使用ROS 2进行复杂机器人的设计、构建、仿真与原型开发(第四版)

Mastering ROS 2 for Robotics Programming: Design, build, simulate, and prototype complex robots using the Robot Operating System 2 , Fourth Edition 《ROS 2机器人编程精通:使用机器人操作系统2进行复杂机器人的设计、构建、仿真与原型开发(第四版)》 出版日期:Jul 2025 作者:Lentin Joseph; Jonathan Cacace 2017-2023旧书推荐。   中文翻译 关键优势 * 从零开始扎实掌握ROS 2的核心概念与特性 * 使用ROS 2、C++、Python和Gazebo设计、仿真和原型开发机器人应用 * 获得与ROS 2 Jazzy集成的生成式人工智能(GenAI)和强化学习等最新技术的实践经验

什么是 PX4?无人机开发的第一步

什么是 PX4?无人机开发的第一步

本文是《从零开始学 PX4:无人机开发全流程实战》系列第一篇,带你迈出无人机飞控开发的第一步。适合零基础、有嵌入式/C++背景的开发者。 ✈️ 一、PX4 是什么? PX4 是一套开源的飞控系统(Flight Control System),适用于多种类型的无人机与机器人。它不仅仅是一个固件,而是一个完整的无人系统开发生态,包括飞控软件、仿真平台、通信协议、地面站和开发工具链。 📌 PX4 的组成: * ✅ PX4-Autopilot:飞控固件主仓库(C++ 开发) * ✅ QGroundControl:图形化地面站,便于调参与监控 * ✅ MAVLink:轻量级通信协议 * ✅ Gazebo / jMAVSim:仿真模拟器 * ✅ MAVSDK / MAVROS:无人机接口(支持 Python / C++ / ROS) 顶层软件架构 下面的架构图对 PX4 的各个积木模块以及各模块之间的联系进行了一个详细的概述。