2

我使用 Elasticsearch 已经有一段时间了,使用 Cassandra 的经验很少。

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

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

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

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

谢谢

4

2 回答 2

3

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

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

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

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

于 2015-08-28T21:35:41.213 回答
2

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

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

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

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

于 2016-07-30T10:42:39.527 回答