我目前正在运行一个Flink会话集群(库伯内特斯、1个JobManager、1个TaskManager、ZooManager、S3),其中运行多个作业。
由于我们正在努力添加更多作业,我们正在寻求改进我们的部署和集群管理策略。我们正在考虑迁移到使用作业集群,但是对将产生的容器数量有保留。每个作业一个容器不是问题,但是每个作业两个容器(1个JM和1个TM)会引起内存消耗问题。一些作业需要高可用性以及在窗口上聚合事件时使用检查点和从/获取保存点恢复的能力。
从我阅读的文档和在谷歌上花费的时间来看,我还没有发现任何东西能够说明所考虑的内容是否真的可行。
是否可以执行以下三项操作之一:
(如果有人有更好的主意,我洗耳恭听。)
检查此操作符,它可以自动在Kubernetes部署和管理Flink的生命周期。该项目处于beta测试阶段,但您仍然可以了解如何操作,或者如果它符合您的要求,您可以直接使用该操作符。在这里,作业管理器和任务管理器是单独的kubernetes部署。
作业管理器的职责之一是监视任务管理器,并在发生故障时启动重启。当JM和TMs位于单独的容器中时,这在集装箱化环境中可以很好地工作;否则,你似乎是在自找麻烦。如果您打算扩大规模,将TMs分开也是有意义的,尽管这在您的案例中可能没有实际意义。
不过,可行的方法是使用LocalExecutionEnvironment运行作业(这样所有内容都在一个进程中--有时称为Flink微型集群)。如果你愿意的话,我觉得这条路是可行的,但我不能推荐。您必须以某种方式跟踪检查点,并在出现故障时安排容器从检查点重新启动。还有其他一些事情可能不会很好地发挥作用——请参见此问题了解详细信息。LocalExecutionEnvironment在设计时没有考虑到生产部署。
相反,我建议您研究一下,看看您可以在多大程度上使标准的、单独的容器解决方案价格合理。对于初学者,您应该能够用最少的资源运行JM,因为它没有太多的工作要做。
如果Flink应用程序在发生故障或更新后正在启动备份,那么不明确属于KeyedState或OperatorState的类变量是否会持久化? 例如,Flink的留档中描述的BoundedOutOfOrdernessGenerator有一个电流最大时间戳变量。如果更新了Flink应用程序,电流最大时间戳中的值是否会丢失,或者是否会写入在应用程序更新之前创建的保存点? 这样做的真正原因是我想实现一个自定
下面是我对Flink的疑问。 我们可以将检查点和保存点存储到RockDB等外部数据结构中吗?还是只是我们可以存储在RockDB等中的状态。 状态后端是否会影响检查点?如果是,以何种方式? 什么是状态处理器API?它与我们存储的保存点和检查点直接相关吗?状态处理器API提供了普通保存点无法提供的哪些额外好处? 对于3个问题,请尽可能描述性地回答。我对学习状态处理器API很感兴趣,但我想深入了解它的应
我知道stackoverflow上也有类似的问题,但在调查了其中几个之后,我知道 > 他们正在使用不同的存储格式 但这些并不是令人困惑的地方,我不知道什么时候该用一个,什么时候该用另一个。 考虑以下两种情况: 如果由于某种原因(例如错误修复或意外崩溃)需要关闭或重新启动整个应用程序,那么我必须使用保存点来恢复整个应用程序
问题内容: 有没有一种方法可以检查nodestore的firestore中是否存在子集合? 目前,我正在使用文档,但是我需要检查文档中是否存在子类以便写入一些数据。 问题答案: 就在这里。您可以使用docs.length来知道子集合是否存在。 我制作了一个样本来指导您,希望对您有所帮助。
我们目前正在kubernetes上运行flink,作为使用这个helm模板的作业集群:https://github.com/docker-flink/examples/tree/master/helm/flink(带有一些添加的配置)。 如果我想关闭集群,重新部署新映像(由于应用程序代码更新)并重新启动,我将如何从保存点进行恢复? jobManager命令严格设置在standalone-job.s
例如,我知道在检查字符串时,可以执行如下操作 但是是否有一种方法来检查一个字符是否匹配一个可能性列表?或者我必须逐一检查,例如 ...等。