首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用REST监视API将Flink作业管理器发送到保存点目录的完全限定路径

使用REST监视API将Flink作业管理器发送到保存点目录的完全限定路径
EN

Stack Overflow用户
提问于 2017-08-23 23:50:11
回答 1查看 705关注 0票数 1

我有一个远程运行的Flink作业管理器,并且正在使用REST Monitoring API来安排作业。

Flink启用保存点,以便我可以中断正在运行的作业,并从保存的状态恢复它。保存点数据的持久化位置应该在作业管理器的外部(例如,这样我就可以重新配置和重新启动作业管理器并恢复作业),比如HDFS卷或S3存储桶。这个持久性位置可以使用state.savepoints.dir配置键在作业管理器上进行全局配置,但也应该能够通过中断命令传入:

代码语言:javascript
复制
# When job manager is running locally
$ bin/flink cancel -s s3:///savepoint-bucket/my-awesome-job <jobID>

当远程运行时,相应的REST请求为

代码语言:javascript
复制
GET https://jm-host:8081/jobs/:jobid/cancel-with-savepoint/target-directory/s3:///savepoint-bucket/my-awesome-job-savepoints

但是,REST处理程序无法处理此请求--它返回一个502错误网关,因为它将斜杠作为路径组件分隔符读取。并传入未限定的目录名,如

代码语言:javascript
复制
GET https://jm-host:8081/jobs/:jobid/cancel-with-savepoint/target-directory/my-awesome-job-savepoints

不会将my-awesome-job-savepoints解析为远程持久性位置的子目录(即使设置了state.savepoints.dir配置键),而是尝试创建REST service my-awesome-job-savepoints应用程序的当前工作目录的Java子目录。

我尝试过对完全限定的持久性路径进行URL编码,但这没有帮助。有没有办法通过REST API将这个完全限定的路径传递给Job Manager?(出于这个问题的目的,假设不可能使用bin/flink -m jm-host:8081。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-20 05:42:50

请确保按照RFC 3986使用百分号编码对目标目录进行仔细编码。

例如,对于编码为s3%3A%2F%2F%2Fsavepoint-bucket%2Fmy-awesome-job的目录s3:///savepoint-bucket/my-awesome-job,我可以提交以下网址:http://localhost:8081/jobs/5c360ded6e4b7d8db103e71d68b7c83d/cancel-with-savepoint/target-directory/s3%3A%2F%2F%2Fsavepoint-bucket%2Fmy-awesome-job

并在日志中查看以下内容:

代码语言:javascript
复制
2017-09-19 14:27:45,939 INFO  org.apache.flink.runtime.jobmanager.JobManager                - Trying to cancel job 5c360ded6e4b7d8db103e71d68b7c83d with savepoint to s3:///savepoint-bucket/my-awesome-job
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45844298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档