百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

了解Flink中的History Server:记录和展示作业历史信息的重要工具

myzbx 2025-10-14 01:59 28 浏览

Flink 中的 History Server 是一个非常有用的组件,可以在相应的 Flink 集群关闭之后查询已完成作业的统计信息。并且,它还提供了一个 REST API,可接受 HTTP 请求并以 JSON 数据作为响应。本文将详细介绍 Flink History Server 的工作原理和主要功能。

一、History Server工作原理

Apache Flink 自带了一个 HistoryServer 进程,它是一个独立的 Web 服务器。HistoryServer 不参与 Flink 作业执行,仅用于展示作业的历史信息。它的工作原理如下:

  1. JobManager 会将已完成的作业的信息以存档文件的形式写入 HDFS 或者其他持久存储中。
  2. HistoryServer 读取这些存档文件,并提供 Web 界面展示其信息内容。
  3. 用户通过 HistoryServer 的 Web UI 查看作业记录和运行数据。

每个作业完成后,JobManager 会把该作业的信息打包成一个个 JSON 格式的归档文件,包括作业配置信息、作业执行过程中的 Checkpoint 信息、已完成作业的统计数据等,并存储在 HDFS 或者其他文件系统中。HistoryServer 会定期轮询这些归档文件所在的目录,所包含的存档会被下载缓存在本地文件系统中,以便在 Web UI 展示。

二、History Server的主要功能

通过 History Server Web UI,用户可以查看 Flink 已完成作业的各种历史信息,主要包含以下方面:

  1. 查看所有已完成作业列表,以列表的形式展示了每一次作业执行的概览信息。
  2. 作业配置信息,包括并行度设置、系统参数等。
  3. 作业计划(Execution Graph),以图的形式展示作业的拓扑结构。
  4. 作业内所有任务(Vertex)的统计数据,如每个任务的运行时长、发送记录数等。
  5. 作业失败或异常信息,可以指导定位故障。
  6. 作业执行过程中的 Checkpoint 信息,如 Checkpoint 失败次数、Checkpoint 统计信息等。
  7. 支持以图表的形式查看作业时间线(Timeline),可以很直观地观察作业的执行过程。

三、History Server配置

JobManager

根据 History Server 的工作原理,我们知道 JobManager 负责已完成作业的归档工作,即将已完成的作业的信息写入到 HDFS 或者其他持久存储中,以供 History Server 查询展示。所以我们需要在 flink-conf.yaml 文件中配置已完成作业的存档目录(通过 jobmanager.archive.fs.dir 设置),如:

1
2
# 已完成作业信息的存档目录
jobmanager.archive.fs.dir: hdfs:///completed-jobs

HistoryServer

已完成作业的存档目录配置好后,接下来就是配置 HistoryServer。通过设置
historyserver.archive.fs.dir
告诉 HistoryServer 需要从哪些目录读取已完成作业的信息。该配置项通常与 jobmanager.archive.fs.dir 一致,即 JobManager 将已完成的作业信息存放在哪里,HistoryServer 就去哪里读。如果目录有多个,可以使用英文逗号分隔。

1
2
# 监视以下目录中已完成的作业
historyserver.archive.fs.dir: hdfs:///completed-jobs

此外,还可以通过配置项
historyserver.archive.fs.refresh-interval
设置 HistoryServer 定期读取目录的时间间隔(单位为毫秒),如设置每 10 秒刷新一次:

1
2
# 每 10 秒刷新一次
historyserver.archive.fs.refresh-interval: 10000

HistoryServer 会将目录所包含的存档下载并缓存在本地文件系统中,本地目录可以通过 historyserver.web.tmpdir 配置。

HistoryServer 的 WebUI 监听的地址和端口,可通过以下配置项 historyserver.web.addresshistoryserver.web.port 设置:

1
2
3
4
5
# HistoryServer 的监听地址
historyserver.web.address: 0.0.0.0

# HistoryServer 的监听端口
historyserver.web.port: 8082

配置参数

配置项

默认值

类型

说明

historyserver.archive.clean-expired-jobs

false

Boolean

是否应清理不再存在于
historyserver.archive.fs.dir
的作业。

historyserver.archive.fs.dir

(none)

String

以逗号分隔的目录列表,用于获取存档作业。HistoryServer 将监控这些目录中的存档作业。

historyserver.archive.fs.refresh-interval

10000

Long

刷新存档工作目录的间隔(毫秒)。

historyserver.archive.retained-jobs

-1

Integer


historyserver.archive.fs.dir
定义的每个存档目录中要保留的作业的最大数量。如果设置为 -1(默认),则存档数量没有限制。如果设置为 0 或小于 -1,HistoryServer 将抛出
IllegalConfigurationException。

historyserver.log.jobmanager.url-pattern

(none)

String

JobManager 的日志 URL 模式。HistoryServer 将从中生成实际 URL,并将特殊占位符 替换为作业 ID。仅支持 http / https 方案。

historyserver.log.taskmanager.url-pattern

(none)

String

任务管理器日志 URL 的模式。HistoryServer 将从中生成实际 URL,并将特殊占位符 和 分别替换为 job 和 TaskManager 的 id。仅支持 http / https 方案。

historyserver.web.address

(none)

String

HistoryServer WebUI 地址。

historyserver.web.port

8082

Integer

HistoryServer WebUI 端口。

historyserver.web.refresh-interval

10000

Long

HistoryServer 网络前端的刷新间隔(毫秒)。

historyserver.web.ssl.enabled

false

Boolean

启用 HTTP 访问 HistoryServer 网络前端。只有当全局 SSL 标志 security.ssl.enabled 设为 true 时才适用。

historyserver.web.tmpdir

(none)

String

HistoryServer REST API 用于临时文件的本地目录。

四、启动History Server

在配置好 HistoryServer 和 JobManager 之后,可以使用以下的脚本来启动和停止 HistoryServer:

启动 HistoryServer

1
2
# 启动 HistoryServer
bin/historyserver.sh start

停止 HistoryServer

1
2
# 停止 HistoryServer
bin/historyserver.sh stop

需要注意的是:HistoryServer 目前只能作为独立的进程运行。

小结

Flink 中的 History Server 是一款非常实用且强大的组件,它通过记录和展示 Flink 作业的历史运行信息,为审计和调试作业提供了重要的手段。该工具采用独立的 Web 服务器,不参与作业执行,仅用于展示作业的历史信息。History Server 的工作原理是 JobManager 将完成作业的信息存档到 HDFS 或其他持久存储,然后 History Server 读取并下载缓存到本地文件系统中,以提供 Web 界面展示。

通过 History Server 的 Web UI,我们可以轻松查看已完成作业列表、任务统计数据、作业失败异常信息、Checkpoint 信息等。借助 History Server,我们可以审计已完成的作业,分析和优化作业性能,定位故障原因,是非常必要的辅助工具。

以上是 Apache Flink History Server 的简要介绍,希望对大家有所帮助。

相关推荐

如何设计一个优秀的电子商务产品详情页

加入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品电子商务网站的产品详情页面无疑是设计师和开发人员关注的最重要的网页之一。产品详情页面是客户作出“加入购物车”决定的页面...

怎么在JS中使用Ajax进行异步请求?

大家好,今天我来分享一项JavaScript的实战技巧,即如何在JS中使用Ajax进行异步请求,让你的网页速度瞬间提升。Ajax是一种在不刷新整个网页的情况下与服务器进行数据交互的技术,可以实现异步加...

中小企业如何组建,管理团队_中小企业应当如何开展组织结构设计变革

前言写了太多关于产品的东西觉得应该换换口味.从码农到架构师,从前端到平面再到UI、UE,最后走向了产品这条不归路,其实以前一直再给你们讲.产品经理跟项目经理区别没有特别大,两个岗位之间有很...

前端监控 SDK 开发分享_前端监控系统 开源

一、前言随着前端的发展和被重视,慢慢的行业内对于前端监控系统的重视程度也在增加。这里不对为什么需要监控再做解释。那我们先直接说说需求。对于中小型公司来说,可以直接使用三方的监控,比如自己搭建一套免费的...

Ajax 会被 fetch 取代吗?Axios 怎么办?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!今天给大家带来的主题是ajax、fetch...

前端面试题《AJAX》_前端面试ajax考点汇总

1.什么是ajax?ajax作用是什么?AJAX=异步JavaScript和XML。AJAX是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实...

Ajax 详细介绍_ajax

1、ajax是什么?asynchronousjavascriptandxml:异步的javascript和xml。ajax是用来改善用户体验的一种技术,其本质是利用浏览器内置的一个特殊的...

6款可替代dreamweaver的工具_替代powerdesigner的工具

dreamweaver对一个web前端工作者来说,再熟悉不过了,像我07年接触web前端开发就是用的dreamweaver,一直用到现在,身边的朋友有跟我推荐过各种更好用的可替代dreamweaver...

我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊

接下来你看到的将是全网最详细的Java知识点总结,全文分为三大部分:Java基础、Java框架、Java+云数据小编将为大家仔细讲解每大部分里面的详细知识点,别眨眼,从小白到大佬、零基础到精通,你绝...

福斯《死侍》发布新剧照 "小贱贱"韦德被改造前造型曝光

时光网讯福斯出品的科幻片《死侍》今天发布新剧照,其中一张是较为罕见的死侍在被改造之前的剧照,其余两张剧照都是死侍在执行任务中的状态。据外媒推测,片方此时发布剧照,预计是为了给不久之后影片发布首款正式预...

2021年超详细的java学习路线总结—纯干货分享

本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。纯干货,良心推荐!第一阶段:Java基础重点知识点:数据类型、核心语法、面向对象...

不用海淘,真黑五来到你身边:亚马逊15件热卖爆款推荐!

Fujifilm富士instaxMini8小黄人拍立得相机(黄色/蓝色)扫二维码进入购物页面黑五是入手一个轻巧可爱的拍立得相机的好时机,此款是mini8的小黄人特别版,除了颜色涂装成小黄人...

2025 年 Python 爬虫四大前沿技术:从异步到 AI

作为互联网大厂的后端Python爬虫开发,你是否也曾遇到过这些痛点:面对海量目标URL,单线程爬虫爬取一周还没完成任务;动态渲染的SPA页面,requests库返回的全是空白代码;好不容易...

最贱超级英雄《死侍》来了!_死侍超燃

死侍Deadpool(2016)导演:蒂姆·米勒编剧:略特·里斯/保罗·沃尼克主演:瑞恩·雷诺兹/莫蕾娜·巴卡林/吉娜·卡拉诺/艾德·斯克林/T·J·米勒类型:动作/...

停止javascript的ajax请求,取消axios请求,取消reactfetch请求

一、Ajax原生里可以通过XMLHttpRequest对象上的abort方法来中断ajax。注意abort方法不能阻止向服务器发送请求,只能停止当前ajax请求。停止javascript的ajax请求...