【问题标题】:Spark-Cassandra Vs Spark-ElasticsearchSpark-Cassandra 与 Spark-Elasticsearch
【发布时间】:2015-08-28 20:53:07
【问题描述】:

我使用 Elasticsearch 已经有一段时间了,但几乎没有使用 Cassandra 的经验。

现在,我有一个项目,我们想使用 spark 处理数据,但我需要决定是否应该使用 Cassandra 或 Elasticsearch 作为数据存储来加载我的数据。

在连接器方面,Cassandra 和 Elasticsearch 现在都有一个很好的连接器来加载数据,因此这不会成为决定因素。

决定胜负的因素是我在 Spark 中加载数据的速度。我的数据将近 20 TB。

我知道我可以使用 JMeter 运行一些测试并自己查看结果,但我想问问熟悉这两个系统的人。

谢谢

【问题讨论】:

  • 问题是什么?
  • 是的,这取决于数据检索工作量。 Cassandra 非常擅长按键检索部分数据,从 spark 中您可以只按下主键和聚集键上的过滤器,否则对于全表扫描(select * from table)不太好。详细描述我们您的用例,因为 cassandra 和 elasticsearch 都是非常“垂直”的 DBMS
  • 我的用例非常简单,我需要每天使用 Spark 为不同的用户 (1M+) 生成报告。现在,我需要将所有用户的数据从 Cassandra 或 Elasticsearch 加载到 Spark,同时运行 Cassandra 和 Elasticsearch 是没有意义的。

标签: elasticsearch apache-spark cassandra-2.0 spark-cassandra-connector elasticsearch-hadoop


【解决方案1】:

简短的确切答案是“取决于”,主要取决于集群大小 =)

我不会选择 Elastisearch 作为数据的主要来源,因为它擅长搜索。搜索是一项非常具体的任务,它需要一种非常具体的方法,在这种情况下,它使用倒排索引来存储实际数据。每个字段基本上都进入单独的索引,因此索引非常紧凑。尽管可以将完整的对象存储到索引中,但这样的索引几乎不会从压缩中获得任何好处。这需要更多的磁盘空间来存储索引和更多的 cpu 时钟,旋转磁盘来处理它们。

另一方面,Cassandra 非常擅长存储和检索数据。

没有任何或多或少的具体要求,我会说 Cassandra 擅长作为主存储(并提供非常简单的搜索场景),而 ES 擅长搜索。

【讨论】:

    【解决方案2】:

    我将驳斥 Evgenii 关于 ES 如何只擅长搜索的回答。 YES ES 在文本搜索中超过,但这并不意味着它不能做数据。

    您实际上可以将其视为“Mongo”风格的文档并对其运行“过滤”查询以快速获取结果。但是现在的问题变成了:您需要多快的读/写速度以及是否需要任何发行版? ES 缺乏的是分发。是的,ES 可以进行分片,但它在多区域分布和数据复制的可靠性方面存在问题。

    如果您需要数据的灵活性/可靠性,我会选择 Cassanda。此外,由于您正在处理 TB - Cassandra 也可能是赢家,因为它适合超大容量。

    如果您需要更轻松的时间来运行搜索(不限于文本搜索,例如:地理空间,您也可以这样做),那么 ES 可能更适合。 (注意你正在做的剪切体积,你需要分片来分配你的负载)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-13
      • 2016-09-02
      • 2018-04-03
      • 2019-06-21
      • 2017-07-25
      • 2020-03-16
      • 2019-04-10
      • 1970-01-01
      相关资源
      最近更新 更多