各位好: 我是flink的初学者。 今天在flink web UI 和后台的job 管理页面 发现很多
exception: ......
11:29:30.107 [flink-akka.actor.default-dispatcher-41] ERROR
org.apache.flink.runtime.rest.handler.job.JobExceptionsHandler -
Exception occurred in REST handler: Job 16c614ab0d6f5b28746c66f351fb67f8
not found
......
此时,登录flink web UI, 在"completed jobs"页面
找不到任何job的历史信息,但是当初提交job的时候 是能看到这些job 信息的。
环境信息:
flink: 1.12.4 for windows
启动flink和执行flink 作业使用的是 1.9.3版本的start-cluster.bat, flink.bat
我的疑问是:flink 是否有定期清理历史job的功能?
如果有,在哪里(通过命令行或者配置文件)可以配置相关的参数 ?
如果没有,这些错误信息是否正常 ?怎样解决这个问题 ?
Thanks,*来自志愿者整理的flink邮件归档
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
Apache Flink 的历史作业信息默认是存储在 JobManager 的内存中,因此当 JobManager 重启时,之前的历史作业信息会丢失。Flink 本身并没有内置的定期清理历史作业的功能,因为它通常假设作业状态(包括已完成作业的信息)要么被持久化存储(例如通过 checkpointing),要么在 JobManager 重启后不再可用。
对于您遇到的情况,有几个可能的原因和解决办法:
JobManager 重启:如果您的 JobManager 在运行过程中重启了,那么它内存中的历史作业信息将会丢失。这是正常现象,不是错误。为长期保存作业历史,您可以考虑使用外部系统如监控系统(如Prometheus配合Grafana)、日志系统(如ELK Stack)来收集和存储这些信息。
配置历史服务器:Flink 提供了一个可选的 HistoryServer,它可以独立于正在运行的集群收集并展示历史作业信息。要启用 HistoryServer,您需要在 conf/flink-conf.yaml
中进行如下配置,并启动 HistoryServer:
jobmanager.archive.fs.dir: hdfs:///path/to/flink/archive # 或其他文件系统路径
然后,启动 HistoryServer:
./bin/historyserver.sh start
这样,即使 JobManager 重启,已完成的作业信息仍然可以通过 HistoryServer 查看。
版本兼容性问题:您提到使用的是 Flink 1.12.4,但通过 1.9.3 版本的脚本启动。虽然这不应该是导致历史作业消失的直接原因,但不同版本间的脚本或配置可能存在差异,建议使用与 Flink 版本匹配的启动脚本以避免潜在的兼容性问题。
综上所述,如果您希望保留和查看历史作业信息,部署并配置 HistoryServer 是一个推荐的解决方案。至于您看到的 "Job not found" 错误,这很可能是因为 JobManager 重启或者没有正确配置历史记录功能所致,而不是异常情况。