我在docker上运行了Flink1.2.1,任务管理器作为docker群的一部分分布在不同的虚拟机上。
我知道flink还没有动态缩放功能。因此,如果我想增加运行flink的任务管理器(scale-up)的容器的数量,我需要创建一个保存点,停止正在运行的作业,放大我的任务管理器容器,然后继续作业。
我的问题是:如何创建保存点?文档假定您使用的是命令行客户机,但是如果我在容器中运行flink,我认为我无法访问它。web ui也不允许您创建保存点。在这种情况下,我该怎么办?
我使用官方的flink文档作为参考:https://ci.apache.org/projects/flink/flink-docs-release-1.2/setup/cli.html#savepoints
非常感谢你的帮助。
1条答案
按热度按时间0lvr5msh1#
我想我可能已经找到了自己问题的答案。我会把它贴在这里,以防将来有其他人在同一个问题上挣扎。
基本上,我使用“docker exec”命令进入运行作业管理器的容器中,并在该容器中执行命令。
缩放过程有点复杂,但以下是对我有效的方法:
获取运行作业管理器的容器的id:
JOBMANAGER_CONTAINER=$(docker ps --filter name=jobmanager --format={{.ID}})
取消当前作业并创建保存点:docker exec -t -i "$JOBMANAGER_CONTAINER" flink cancel -s [savepointDirectory] <jobID>
复制创建的保存点的名称。缩放taskmanager。
在webui中,再次提交作业,指定新的并行性和上面创建的保存点的路径。
在flink实现动态缩放之前,上述过程应该是可行的。我还没有在swarm环境中测试过它,但是它在docker compose中可以很好地扩展。