【发布时间】:2014-07-21 11:36:06
【问题描述】:
我正在评估 Apache Spark 及其 Spark Streaming 组件以用于 Web 应用程序和外部 API 的后端。通过这样的设置,后端会收到很多不统一定时的数据:例如响应用户在网站上的操作。 编辑:在大多数情况下,我希望为用户提供实时响应。越快越好,但延迟 1-3 秒是可以的。一个示例用例是用户请求在 Web UI 中查看统计图。
从文档中,我了解到 Spark Streaming 的基本模型是以相等的间隔(“批处理持续时间”)处理数据,例如1秒左右。
Spark Streaming 执行的批处理可能有助于减少从前端到后端的 RPC 数量:从每个事件一个到每秒一个。
但除此之外,这种架构似乎也有缺陷:
- 以固定的时间间隔处理事件,而不是在它们发生时处理。
- Spark Streaming 程序中稍微不寻常的控制流: doSparkStreaming() { 流上下文.start(); streamingContext.awaitTermination(); }
- 在用户长时间不活动期间不必要地轮询数据源。
我倾向于不使用它。我可能错过了什么吗?
非常感谢。
【问题讨论】:
-
您正在考虑哪些用例?这一切都取决于用例。
-
这里没有足够的信息来做出决定,我只能从中看出你的用例是获取大量不统一计时的数据。我什至不确定流式传输是否是正确的模型,IK 已经有了答案,但我认为如果您提供有关用例的更多详细信息,您可以获得更好的答案
-
@aaronman, maasg:谢谢 - 我在第一段中添加了延迟要求(1-3 秒)和用例(交互式 Web UI)。你怎么看?
-
我是否正确理解您想使用火花流(或类似的)来接收网页请求并传递数据?那些用户请求被称为“不统一时间”?请求的数据是什么?它存储在哪里?
-
@maasg:是的,没错。我们意识到这不是标准架构,我们只考虑 Spark Streaming,因为我们还有许多用于周期性计算的用例,没有任何延迟要求。此外,Spark 有一个机器学习库并与分布式数据库集成,我们肯定需要一种或另一种方式。整个系统用于业务流程监控/分析。根据我的问题中所述的要求,您认为我们应该寻找其他东西吗?
标签: architecture stream apache-spark