【问题标题】:Streaming Big Data - where to store intermediate results?流式大数据 - 在哪里存储中间结果?
【发布时间】:2015-09-02 18:28:14
【问题描述】:

我正在处理需要存储中间结果以便在下一个窗口流中重用它们的 spark 流式传输作业。数据数量非常大,因此可能无法将其存储在 Spark 缓存中。我还需要以某种方式通过某些“键”读取数据。 我曾考虑将 Cassandra 作为中间存储,但它也有一些缺点。 或者,也许 Kafka 可以完成这项工作,但它需要额外的工作才能通过键选择给定的数据部分。

你能告诉我我应该怎么做吗? Storm 中如何解决此类问题 - 是否有任何内部机制,或者最好使用一些外部工具?

【问题讨论】:

  • 您的意思是输入 s/Wow/how 吗?
  • @phact 是的,已编辑 - 谢谢
  • 在 Storm 中,您必须将中间结果保存在内存中(或将它们保存到数据库中)。哦,你必须实现逻辑来处理你的设计决策。

标签: cassandra bigdata spark-streaming apache-storm


【解决方案1】:

正如您所提到的,Kafka 在通过密钥获取项目时存在一些问题。它实际上只为 FIFO 范例提供 API。我建议使用专用的存储软件,Cassandra,MongoDB,我什至见过 Solr 用于存储文本。使用专为密钥检索而设计的东西会更容易,而不是尝试自己修改 Kafka,而且很可能会引入可能需要永远解决的错误/问题。

正如 SQL.injection 所说,您必须自己管理存储和逻辑。 Storm 没有提供这样的机制。

【讨论】:

    【解决方案2】:

    Solr 作为索引 + Cassandra 作为 NoSQL 存储在我必须处理 TB 字节数据的用例中运行良好。但就我而言,我使用 Cassandra 来持久存储多年的数据。

    由于架构简单,Kafka 作为 Jboss/AMQ 的替代品运行良好。目前我正在使用 Apache Storm + Kafka 在其中一个项目中进行实时流处理。

    由于您要存储中间数据,我认为通过设置正确的保留期,Kafka 是最佳选择。

    再看看SE Question 和其他article

    【讨论】:

      猜你喜欢
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-12
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      相关资源
      最近更新 更多