我需要实现以下数据流。我有一个有9个分区的kafka主题。我可以以9个并行度阅读该主题。我也有3个节点的Flink群集。该集群的每个节点都有24个任务槽。
首先,我想像散播我的kafka,每个服务器都有3个分区,如下所示。顺序无关紧要,我只转换kafka消息并发送给DB。
第二件事是,我想在保存NoSQL DB的同时提高并行度。如果我增加并行度48,由于发送数据库是IO操作,因此不消耗CPU,我想确定的是,当Flink重新平衡我的消息时,我的消息将保留在同一服务器上。
有什么建议吗?
答案 0 :(得分:0)
如果要将Kafka阅读器分布在所有3个节点上,我建议每个阅读器都从3个插槽开始,并将Kafka源的并行度设置为9。
问题是,如果可用插槽比所需的并行性多,那么目前无法控制任务的放置方式。这意味着如果您的资源少于插槽,则可能会将所有资源都部署到一台计算机上,而将另一台计算机留空(在资源方面)。
能够在所有可用计算机上分散任务是社区当前正在使用的功能。