【问题标题】:Is Spark Streaming good for processing randomly timed data?Spark Streaming 是否适合处理随机定时数据?
【发布时间】: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


【解决方案1】:

您的分析准确无误:当前形式的 Apache Spark 可能不是最佳选择。我会推荐一个排队系统,例如Kafka 或者可能是基于 Cassandra/Storm 的方法。

【讨论】:

  • 我不确定你如何证明这个答案的合理性,火花流绝对可以用来跟踪用户活动
  • @aaronman OP 指出了在此用例中使用 Spark 的问题。 Spark 流不是实时和/或不稳定事件的完美匹配 - 正是 OP 中的内容。您正在谈论用户活动 - 太宽泛而无法作为评论使用。而是关注交付率和规律性以及所需的报告延迟。
  • spark streaming 肯定会实时处理数据,他没有指定是否需要实时响应(尽管实时使用 spark)。至于您的建议,kafka 主要用于摄取日志而不是进行实际计算,storm 与 spark 相比具有非常受限的模型,因此如果他需要任何类型的复杂数据流,那么他的数据风暴就出来了。我对 cassandra 不太了解,它似乎确实是一个可能的选择,但即便如此,spark 实际上也有一个与 cassandra 的连接器,这使得它(有争议地)更易于使用。
  • 最后(最后一条评论空间不足)非统一定时数据有点毫无意义和模糊,除非数据来自某种自动化过程,否则它不会是统一的,也没有理由认为 spark-streaming 只能处理这种情况
  • 很抱歉让你读到这堵文字墙,我注意到你说 cassandra/storm 方法,所以我收回我对风暴的评论,但其他一切仍然有效
猜你喜欢
  • 1970-01-01
  • 2020-03-19
  • 2016-10-31
  • 1970-01-01
  • 2019-06-28
  • 2017-06-24
  • 1970-01-01
  • 2017-05-02
  • 2014-09-04
相关资源
最近更新 更多