【发布时间】:2017-09-09 14:34:12
【问题描述】:
我有几个关于 flink 并行性的问题。这是我的设置:
我有 1 个主节点和 2 个从节点。在 flink 中,我创建了 3 个 kafka 消费者,每个消费者都来自不同的主题。
由于元素的顺序对我来说很重要,所以每个主题只有一个分区,并且我有 flink 设置来使用事件时间。
然后我在每个数据流上运行以下管道(以伪代码形式):
source
.map(deserialize)
.window
.apply
.map(serialize)
.writeTo(sink)
到目前为止,我使用参数 -p 2 启动我的 flink 程序,假设这将允许我使用我的两个节点。结果不是我所希望的,因为我的输出顺序有时会搞砸。
在阅读了 flink 文档并试图更好地理解它之后,有人可以确认我的以下“学习”吗?
1.) 传递-p 2 仅配置任务并行度,即一个任务(例如map(deserialize))将被拆分成的最大并行实例数。如果我想通过整个管道保持订单,我必须使用-p 1。
2.) 这对我来说似乎是矛盾的/令人困惑的:即使并行度设置为 1,不同的任务仍然可以并行运行(同时)。因此,如果我通过-p 1,我的 3 个管道也将并行运行。
作为后续问题:有什么方法可以确定哪些任务映射到了哪个任务槽,以便我自己确认并行执行?
我将不胜感激!
更新
Here是flink对-p 2的执行计划。
【问题讨论】:
标签: parallel-processing apache-kafka apache-flink