
大数据流处理批处理数据工程【免费下载链接】flink项目地址https://gitcode.com/gh_mirrors/fli/flink点击查看免费下载History Server 是 Flink 部署体系中用于翻旧账的关键组件当 Flink 集群JobManager已经关闭之后你依然可以通过它查询已完成作业的统计信息、执行图、累加器与异常栈。本文以官方文档 historyserver.md 为主体骨架结合本仓库源码逐层讲解 History Server 的启动方式、作业存档与轮询机制、全部核心配置项、日志集成方案以及完整 REST API 清单帮助你把它真正用起来。概览History Server 允许查询 JobManager 存档的已完成作业的状态和统计信息。它的工作模式是JobManager 侧在作业完成后将作业的存档信息执行图、运行时指标、统计信息等以 JSON 形式写入文件系统目录HistoryServer 侧作为一个独立进程周期性地轮询这些目录把新出现的存档下载到本地缓存并通过 WebUI 与 REST API 对外提供查询能力。在配置好 HistoryServer和JobManager 之后可以使用bin/historyserver.sh脚本来启动或停止 HistoryServer# 启动或者停止 HistoryServer bin/historyserver.sh (start|start-foreground|stop)从脚本实现 historyserver.sh 可以看到start/start-foreground会携带--configDir ${FLINK_CONF_DIR}参数start-foreground通过flink-console.sh historyserver在前台运行便于排障、观察日志而start与stop则走flink-daemon.sh以守护进程方式管理。默认情况下HistoryServer 绑定到localhost的8082端口。目前只能将 HistoryServer 作为独立的进程运行——它不属于 JobManager/TaskManager 集群的一部分。工作原理从 JobManager 存档到 HistoryServer 读取JobManager 侧作业完成即存档jobmanager.archive.fs.dir指定了 JobManager 存放已完成作业存档的目录。对应源码中的配置定义位于 JobManagerOptions.java/** The location where the JobManager stores the archives of completed jobs. */ public static final ConfigOptionString ARCHIVE_DIR key(jobmanager.archive.fs.dir) .stringType() .noDefaultValue() .withDescription(Directory for JobManager to store the archives of completed jobs.);实际落盘逻辑由 FsJobArchivist.java 承担作业结束时Dispatcher会收集JsonArchivist产生的所有 JSON 片段写入到rootPath/jobId对应的存档文件中。存档文件是一个 JSON 对象内部包含archive数组数组元素由pathREST API 路径与json对应路径返回的 JSON 内容两个字段组成例如{ archive: [ { path: /jobs/overview, json: {...} }, { path: /jobs/jobid, json: {...} } ] }反过来getArchivedJsons 则负责把存档文件读回为一系列ArchivedJson对象供 HistoryServer 的 REST 处理器复用——这解释了为什么 HistoryServer 能提供与 JobManager 运行时几乎一致的 REST API它直接回放存档中的 JSON 数据。HistoryServer 侧轮询目录并缓存到本地HistoryServer 通过historyserver.archive.fs.dir设置要监视的目录支持逗号分隔的目录列表源码注释见 HistoryServerOptions.java并定期轮询已配置的目录以查找新的存档。轮询间隔由historyserver.archive.fs.refresh-interval配置其默认值为10000 毫秒10 秒对应源码public static final ConfigOptionDuration HISTORY_SERVER_ARCHIVE_REFRESH_INTERVAL key(historyserver.archive.fs.refresh-interval) .durationType() .defaultValue(Duration.ofMillis(10000L)) .withDescription(Interval for refreshing the archived job directories.);被发现的存档会下载缓存在本地文件系统中本地目录通过historyserver.web.tmpdir配置缓存的本意是让 WebUI / REST 查询不直接依赖远程文件系统的持续可用性。配置参数核心配置JobManager HistoryServer 联动JobManager在 Flink 配置文件 中通过jobmanager.archive.fs.dir设置存档目录# 上传已完成作业信息的目录 jobmanager.archive.fs.dir: hdfs:///completed-jobsHistoryServer设置监视目录与轮询间隔# 监视以下目录中已完成的作业 historyserver.archive.fs.dir: hdfs:///completed-jobs # 每 10 秒刷新一次单位毫秒 historyserver.archive.fs.refresh-interval: 10000注意historyserver.archive.fs.dir支持逗号分隔的多个目录例如hdfs:///completed-jobs-a,hdfs:///completed-jobs-bhistoryserver.web.tmpdir为下载缓存的本地临时目录。完整配置选项除上述核心参数外HistoryServer 的全部配置项定义在 HistoryServerOptions.java下表汇总了各选项的含义与默认值配置项默认值说明historyserver.archive.fs.dir无逗号分隔的目录列表HistoryServer 轮询这些目录获取存档historyserver.archive.fs.refresh-interval10000毫秒刷新存档目录的时间间隔historyserver.archive.clean-expired-jobsfalse若启用当存档从监视目录中被删除时HistoryServer 也会清除对应作业historyserver.archive.retained-jobs-1每个存档目录中最多保留的作业数-1表示无限制0或小于-1会抛出IllegalConfigurationExceptionhistoryserver.web.tmpdir无HistoryServer REST API 使用的本地临时目录存放下载的存档缓存historyserver.web.address无HistoryServer Web 界面的绑定地址默认绑定 localhosthistoryserver.web.port8082HistoryServer Web 界面的监听端口historyserver.web.refresh-interval10000毫秒Web 前端的刷新间隔historyserver.web.ssl.enabledfalse是否对 HistoryServer Web 前端启用 HTTPS仅当全局security.ssl.enabled为 true 时生效historyserver.log.jobmanager.url-pattern无JobManager 日志 URL 模板jobid会被替换为作业 IDhistoryserver.log.taskmanager.url-pattern无TaskManager 日志 URL 模板jobid与tmid会被替换为作业 ID 与 TaskManager ID以上默认值与取值范围均可在 HistoryServerOptions.java 中直接核对配置选项的完整列表也可以查看配置页面中的 History Server 小节。日志集成Flink 本身并不提供已完成作业的日志收集功能。但如果你已经有了日志收集与浏览服务可以通过两个 URL 模板配置项将 HistoryServer 与其集成从而在 HistoryServer 的 WebUI 上直接链接到对应 JobManager / TaskManager 的日志# HistoryServer 会将 jobid 替换为对应作业的 ID historyserver.log.jobmanager.url-pattern: http://my.log-browsing.url/jobid # HistoryServer 会将 jobid 和 tmid 替换为对应作业和 TaskManager 的 ID historyserver.log.taskmanager.url-pattern: http://my.log-browsing.url/jobid/tmid源码 HistoryServerOptions.java 对此有两点明确约束URL 由模板替换占位符生成且仅支持http/https协议。集成后作业详情页中的日志入口会指向你自建的日志浏览系统例如http://my.log-browsing.url/7684be6004e4e955c2a558a9bc463f65。可用的 REST 请求HistoryServer 暴露了一套 REST API接受 HTTP 请求并返回 JSON 格式的数据。所有请求的基础格式为http://hostname:8082/jobs下面仅列出 URL 的path部分尖括号中的值为变量例如作业7684be6004e4e955c2a558a9bc463f65的/jobs/jobid/exceptions请求应写为http://hostname:port/jobs/7684be6004e4e955c2a558a9bc463f65/exceptions可用请求清单如下/config/jobs/overview/jobs/jobid/jobs/jobid/vertices/jobs/jobid/config/jobs/jobid/exceptions/jobs/jobid/accumulators/jobs/jobid/vertices/vertexid/jobs/jobid/vertices/vertexid/subtasktimes/jobs/jobid/vertices/vertexid/taskmanagers/jobs/jobid/vertices/vertexid/accumulators/jobs/jobid/vertices/vertexid/subtasks/accumulators/jobs/jobid/vertices/vertexid/subtasks/subtasknum/jobs/jobid/vertices/vertexid/subtasks/subtasknum/attempts/attempt/jobs/jobid/vertices/vertexid/subtasks/subtasknum/attempts/attempt/accumulators/jobs/jobid/plan/jobs/jobid/jobmanager/config/jobs/jobid/jobmanager/environment/jobs/jobid/jobmanager/log-url/jobs/jobid/taskmanagers/taskmanagerid/log-url实战中可用curl直接验证例如查看历史作业概览curl http://localhost:8082/jobs/overview这些接口的实现对应 flink-runtime 中的一组 REST 处理器如JobsOverviewHandler、JobDetailsHandler、JobExceptionsHandler、JobAccumulatorsHandler、JobPlanHandler等位于 flink-runtime/src/main/java/org/apache/flink/runtime/rest/handler/job 目录它们即服务于运行中的 JobManager也服务于回放存档数据的 HistoryServer——这正是 HistoryServer 能在集群关闭后仍保持 API 语义一致的根本原因。小结先存档后查询在 JobManager 配置jobmanager.archive.fs.dir让已完成作业落盘HistoryServer 再通过historyserver.archive.fs.dir轮询读取独立进程部署用bin/historyserver.sh start启动默认监听localhost:8082目前不支持内嵌到集群内运行完整可观测通过 REST API 可以拿到作业概览、顶点/子任务/尝试详情、累加器、异常、执行计划与 JobManager 环境信息配合日志 URL 模板还能直接跳转到自建日志系统按需调优轮询间隔、本地缓存目录、保留作业数、过期清理与 HTTPS 等行为均可通过配置项精确控制全部定义与默认值可在 HistoryServerOptions.java 中核对。赞分享大数据流处理批处理数据工程【免费下载链接】flink项目地址https://gitcode.com/gh_mirrors/fli/flink点击查看免费下载相关推荐Keep 集成 VictoriaLogs日志查询 Provider 部署、认证配置与工作流实战指南Keep 集成 VictoriaLogs日志查询 Provider 部署、认证配置与工作流实战指南 导读 VictoriaLogs 是 VictoriaMet后端告警AI 应用工作流自动化Temporal Server 使用 Amazon S3 作为归档存储的完整配置与查询实战指南Temporal Server 使用 Amazon S3 作为归档存储的完整配置与查询实战指南 导读 本文围绕 Temporal Server 的 S3 归档实后端工作流自动化任务调度Netdata日志分析终极指南systemd日志集成与实时查询技巧详解Netdata日志分析终极指南systemd日志集成与实时查询技巧详解 Netdata是一款功能强大的开源监控工具其 systemd journal.plu可观测性指标监控告警异常检测创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考