【发布时间】:2019-06-29 11:31:41
【问题描述】:
假设我们要计算给定时间段内多个温度传感器的平均值,并且该计算将使用 SPE 以并行方式完成。通常,这个计算至少由四个 UDF 完成:
map -> keyBy -> window -> aggregate
如果我的keyBy 操作员负责获取每个传感器的 ID,而我只有 2 个传感器,则 2 的并行度足以满足我的应用程序(免责声明:我不想考虑窗口有多大或元组现在适合内存)。
如果我有 1000 个传感器,增加并行度会非常好。假设有 100 个节点。
但是如果我的并行度设置为 100 并且我只处理 2 个传感器的元组怎么办。我会有 98 个节点空闲吗? Spark、Flink 或 Storm 是否知道它们不必将数据 shuffle 到 98 个节点?
我提出这个问题的动机是另一个问题。
- 我可以实现什么样的应用程序和场景,这表明当前的流处理引擎(Storm、Flink、Spark)不知道如何在内部优化并行性以在网络上洗牌更少的数据?
- 他们能否预测数据量或种类的任何特征?还是引擎盖下的资源?
谢谢
【问题讨论】:
标签: parallel-processing spark-streaming apache-storm flink-streaming