spark streaming—流处理系统的并行性有多好?

vhmi4jdf  于 2021-06-24  发布在  Storm
关注(0)|答案(1)|浏览(379)

假设我们要计算给定时间段内多个温度传感器的平均值,这个计算将使用spe以并行方式进行。通常,此计算至少由四个自定义项完成:

map -> keyBy -> window -> aggregate

如果我的 keyBy 操作员负责获取每个传感器的id,而我只有2个传感器,2的并行度足以满足我的应用程序(免责声明:我现在不想考虑窗口或元组在内存中的大小)。如果我有1000个传感器,它将是非常好的增加平行度。假设有100个节点。但是如果我的并行度设置为100,而我只处理两个传感器的元组呢。我会有98个节点空闲吗?spark、flink或storm是否知道他们不必将数据洗牌到98个节点?
我问这个问题的动机是另一个问题。
我可以实现什么样的应用程序和场景来显示当前的流处理引擎(storm、flink、spark)不知道如何在内部优化并行性以便在网络上洗牌更少的数据?
他们能预测数据量或种类的任何特征吗?或者引擎盖下面的资源?
谢谢

b09cbbtk

b09cbbtk1#

我的意思是 keyBy() 将具有相同密钥的项分发给同一操作员。如果你有2个键,你的项目实际上被分成2组,这个流的最大并行度是2。带密钥的项目 A 将发送给一个操作员和带有密钥的项目 B 将发送给另一个操作员。
在flink中,如果您只想在所有并行操作符之间分配对项的处理,那么可以使用datastream::shuffle()。

相关问题