有没有可能在kubernetes中运行一个具有高可用性、检查点和保存点的单容器flink集群?

jpfvwuh4  于 2021-06-24  发布在  Flink
关注(0)|答案(2)|浏览(286)

我目前正在运行一个flink会话集群(kubernetes,1个jobmanager,1个taskmanager,zookeeper,s3),其中运行多个作业。
随着我们努力增加更多的工作岗位,我们希望改进部署和集群管理策略。我们正在考虑迁移到使用作业集群,但是对于将生成的容器数量有保留。每个作业一个容器不是问题,但是每个作业两个容器(1个jm和1个tm)会引起内存消耗的问题。其中一些作业需要高可用性,以及在窗口上聚合事件时使用检查点和从/获取保存点进行恢复的能力。
从我阅读的文档和花在谷歌上的时间来看,我还没有发现任何东西,似乎表明正在考虑的是不是真的可能。
有没有可能做到这三件事中的任何一件:
将jobmanager和taskmanager作为单独的进程运行在同一容器中,并将其用作flink集群,或者
将jobmanager和taskmanager作为同一进程运行,或者
作为一个独立的jar运行作业,能够从/获取检查点进行恢复,并且能够获取保存点并从该保存点进行恢复?
(如果有人有更好的主意,我洗耳恭听。)

bvuwiixz

bvuwiixz1#

作业管理器的职责之一是监视任务管理器,并在发生故障时启动重新启动。当jm和tms在不同的容器中时,它在容器化环境中工作得很好;否则就好像你在自找麻烦。如果你打算扩大规模,保持tms的独立也是有意义的,尽管这在你的案例中可能没有实际意义。
不过,可行的方法是使用localexecutionenvironment运行作业(这样所有的东西都在一个进程中——这有时称为flink微型集群)。我觉得这条路可行,如果你愿意的话,但我不能推荐。您必须以某种方式跟踪检查点,并安排容器在出现故障时从检查点重新启动。还有其他一些可能不太好用的方法——详见这个问题。localexecutionenvironment的设计没有考虑到生产部署。
我建议您研究一下,看看您能在多大程度上使标准的、独立的容器解决方案变得经济实惠。对于初学者,您应该能够用最少的资源运行jm,因为它没有太多的工作要做。

6za6bjd0

6za6bjd02#

检查这个操作符,它自动化了在kubernetes中部署和管理flink的生命周期。该项目是测试版,但你仍然可以得到一些关于如何做它的想法或直接使用这个操作符,如果它符合你的要求。这里作业管理器和任务管理器是独立的kubernetes部署。

相关问题