Apache flink 使用REST监控API向Flink作业管理器发送到保存点目录的完全限定路径

Apache flink 使用REST监控API向Flink作业管理器发送到保存点目录的完全限定路径,apache-flink,Apache Flink,我有一个远程运行的Flink作业管理器,我正在使用来安排作业 Flink启用savepointing,以便我可以中断正在运行的作业并将其从保存状态恢复。保存点数据的持久化位置应该位于作业管理器的外部(例如,我可以重新配置和重新启动作业管理器并恢复作业),例如HDFS卷或S3存储桶。可以使用state.savepoints.dirconfig键在作业管理器上全局配置此持久性位置,但也可以使用中断命令传入: # When job manager is running locally $ bin/fl

我有一个远程运行的Flink作业管理器,我正在使用来安排作业

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

# When job manager is running locally
$ bin/flink cancel -s s3:///savepoint-bucket/my-awesome-job <jobID>
但是,REST处理程序无法处理此请求——它返回502坏网关,因为它将斜杠作为路径组件分隔符读取。并传入一个非限定的目录名,如

GET https://jm-host:8081/jobs/:jobid/cancel-with-savepoint/target-directory/my-awesome-job-savepoints
不将
my awesome job savepoints
解析为远程持久化位置的子目录(即使设置了
state.savepoints.dir
config键),而是尝试创建REST服务Java应用程序当前工作目录的
my awesome job savepoints
子目录


我尝试过对完全限定的持久性路径进行URL编码,但这没有帮助。有没有办法通过RESTAPI将此完全限定路径传递给作业管理器?(为了解决这个问题,假设不可能使用
bin/flink-m jm host:8081

请确保按照使用百分比编码对目标目录进行仔细编码

例如,给定目录
s3:///savepoint bucket/my awesome job
,该目录编码为
s3%3A%2F%2F%2F savepoint bucket%2my awesome job
,我可以提交以下URL:

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

2017-09-19 14:27:45939 INFO org.apache.flink.runtime.jobmanager.jobmanager-尝试取消保存点为s3的作业5c360ded6e4b7d8db103e71d68b7c83d:///savepoint bucket/my awesome job

GET https://jm-host:8081/jobs/:jobid/cancel-with-savepoint/target-directory/my-awesome-job-savepoints