Flink 中的批次分别 Spark 能有多大?



我目前正在研究一个用于大规模实验的分析应用的框架。该实验包含大约 40 个仪器,每个仪器生成大约 GB/s 的时间戳。数据旨在以时间块进行分析。
对于实现,我想知道在 Flink 或 Spark 停止处理数据之前,这样一个"块"(又名批处理(可以有多大。我认为它没有说我打算重新收集处理后的数据。

用于实时数据分析

通常,对于您可以使用系统处理的数据量没有硬性限制。这完全取决于您拥有多少节点以及您拥有哪种查询。

听起来您主要希望在给定的时间窗口内聚合每个仪器,因此最大横向扩展限制为 40。这是您可以针对您的问题投入的最大机器数量。然后,问题出现了,你的时间块有多大/聚合变得有多复杂。假设您的聚合要求存在窗口的所有数据,则系统需要每秒保存 1 GB。因此,如果您的窗口为一小时,则系统需要至少容纳 3.6 TB 的数据。

如果机器的主内存不足,则需要将数据溢出到磁盘,这会显着减慢处理速度。Spark 非常喜欢将所有数据保存在内存中,所以这将是实际的限制。Flink 可以将几乎所有数据泄漏到磁盘,但随后磁盘 I/O 成为瓶颈。

如果你需要计算小值(如总和、平均值(,主内存应该不会成为问题。

用于旧数据分析

在分析旧数据时,系统可以进行批处理,并有更多选项来处理卷,包括溢出到本地磁盘。如果您可以将一个窗口的所有数据保存在主内存中,Spark通常会发光。如果你不确定这一点,或者你知道它不适合主内存,Flink 是更具可扩展性的解决方案。尽管如此,我希望这两个框架都能很好地适用于您的用例。

我宁愿看看生态系统和适合你的西装。您想使用哪种语言?感觉使用Jupyter笔记本或齐柏林飞艇最适合您的临时分析和数据探索。特别是如果你想使用Python,我可能会先尝试Spark。

相关内容

  • 没有找到相关文章

最新更新