Flink-在Kubernetes上部署Flink应用程序的多个实例

问题描述

我需要有关在K8上部署Flink应用程序的帮助

我们有3个源将以SQL查询的形式发送触发条件。总查询量约为3-6k,实际上对flink实例而言是沉重的负担。我尝试执行,但是速度很慢,并且需要很多时间才能开始。

由于大量查询,我们决定为每个源创建多个flink应用实例。因此,一个有效的flink实例将仅执行约1-2K查询

示例:SQL查询源为A,B,C

Flink实例:

应用A->仅负责处理源A查询

应用B->仅负责处理源B查询

App C->仅负责处理源C查询

我想在Kubernetes上部署这些实例

问题:

a)是否可以部署带有迷你集群(内置)的独立flink jar?就像刚刚启动main方法一样:Java -cp mainMethod(sourceName是命令行参数A / B / C)。

b)如果k8的一个pod或flink实例出现故障,那么我们如何在另一个pod或另一个flink实例中对其进行管理?可以将工作交给其他Pod或其他flink实例吗?

对不起,如果我将两件或更多件东西混在一起:(

感谢您的帮助。谢谢

解决方法

撇开一次语义的问题,解决此问题的一种方法是具有发出SQL查询的并行源函数(每个子任务一个)和执行查询的下游FlatMapFunction (每个子任务一个)。然后,您的源就可以发送对查询的更新,而不必强迫您重新启动工作流程。