我在Docker上运行Flink 1.2.1,任务管理器作为Docker Swarm的一部分分布在不同的VM上。
我了解Flink中尚未提供Dynamic Scaling。因此,如果我想增加运行Flink任务管理器(扩展)的容器数量,我需要创建一个保存点,停止正在运行的作业,扩展我的任务管理器容器,然后恢复作业。 / p>
我的问题是:如何创建保存点?该文档假定您使用的是命令行客户端,但如果我在容器中运行Flink,我认为我无法访问它。 Web UI也不允许您创建保存点。在这种情况下我该怎么办?
我使用官方Flink文档作为参考: https://ci.apache.org/projects/flink/flink-docs-release-1.2/setup/cli.html#savepoints
非常感谢你的帮助。
答案 0 :(得分:0)
我想我可能已经找到了自己问题的答案。我会在这里发布,以防将来有其他人在同样的问题上挣扎。
基本上,我使用'docker exec'命令进入运行Job Manager的容器内部并在该容器中执行命令。
缩放过程有点复杂,但这对我有用:
JOBMANAGER_CONTAINER=$(docker ps --filter name=jobmanager --format={{.ID}})
docker exec -t -i "$JOBMANAGER_CONTAINER" flink cancel -s [savepointDirectory] <jobID>
在Flink提供动态缩放之前,上述过程应该有效。我还没有在Swarm环境中对它进行测试,但它可以通过Docker Compose进行精确测试。