我有Flink 1.2.1在Docker上运行,任务管理器作为Docker Swarm的一部分分布在不同的VM上。

我了解Flink中尚不提供动态缩放。因此,如果我想增加运行Flink任务管理器的容器数量(按比例放大),则需要创建一个保存点,停止正在运行的作业,按比例放大我的任务管理器容器,然后继续执行该作业。

我的问题是:如何创建保存点?该文档假定您正在使用命令行客户端,但是如果我在容器中运行Flink,我认为我不能访问它。 Web UI也不允许您创建保存点。在这种情况下,我该怎么办?

我使用Flink官方文档作为引用:
https://ci.apache.org/projects/flink/flink-docs-release-1.2/setup/cli.html#savepoints

非常感谢您的帮助。

最佳答案

我想我可能已经找到了自己问题的答案。如果将来有人遇到同样的问题,我将在此处发布。

基本上,我使用'docker exec'命令进入运行Job Manager的容器,并在该容器中执行命令。

扩展过程有些复杂,但是这对我有用:

  • 获取运行Job Manager的容器的ID:JOBMANAGER_CONTAINER=$(docker ps --filter name=jobmanager --format={{.ID}})
  • 取消当前作业并创建一个保存点:docker exec -t -i "$JOBMANAGER_CONTAINER" flink cancel -s [savepointDirectory] <jobID>
  • 复制创建的保存点的名称。
  • 缩放任务管理器。
  • 在Web-UI中,再次提交作业,指定新的并行性和上面创建的保存点的路径。

  • 在Flink可以使用动态缩放之前,以上过程应该可以进行。我尚未在Swarm环境中对其进行测试,但是它可以通过Docker Compose很好地扩展。

    关于docker - Flink 1.2.1-当Flink在容器中运行时,如何创建保存点?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46874081/

    10-16 18:32