将 Spark 与 Cassandra 结合使用?

Using Spark in conjunction with Cassandra?

在我们当前的基础架构中,我们使用 Cassandra 集群作为我们的后端数据库,并且通过 Solr,我们使用网络 UI 让我们的客户根据需要对我们的数据库执行读取查询。

我被要求将 Spark 视为我们可以在未来实施的东西,但我很难理解它将如何改进我们目前所做的事情。

所以我的基本问题是:

1) Spark 是否可以替代 Solr 来查询数据库,例如当用户在我们的网站上查找内容时?

2) 只是一个大概的想法,需要什么样的基础设施来改善我们的现状(5 个 Cassandra 节点,所有这些节点也是 运行 Solr)。 换句话说,我们会很简单地考虑构建另一个仅包含 Spark 节点的集群吗?

3) Spark 节点 运行 可以和 Cassandra 在同一台物理机器上吗?由于内存限制,我猜这将是一个坏主意,因为我对 Spark 的基本理解是它在内存中执行所有操作。

4) 我可以使用任何好的 quick/basic 资源来开始弄清楚 Spark 如何使我们受益?我可以访问 Datastax Academy 课程,所以我正在学习这些课程,只是想知道是否还有其他任何东西可以帮助我的研究。

基本上一旦我弄清楚它是什么,更重要的是 how/if 它是我们可以利用的优势我将开始玩一些测试实例,但我可能应该熟悉一下基础知识首先.

1) 不,Spark 是批处理系统,而 Solr 是实时索引解决方案。 solr 上的延迟将是亚秒级的,Spark 作业需要几分钟(或更多)。 Spark 真的不应该成为 Solr 的替代品。

2) 我通常建议在同一台机器上安装第二个数据中心 运行 同时使用 C* 和 Spark。这将通过复制从第一个数据中心获取数据。

3) Spark 不会在内存中做所有事情。根据您的用例,在与 C* 相同的机器上 运行 可能是个好主意。这可以允许从 C* 读取数据局部性,并显着帮助 table 扫描时间。我通常还建议并置 Spark Executors 和 C* 节点。

4) DS Academy 320 课程可能是 atm 上最好的资源。 https://academy.datastax.com/courses/getting-started-apache-spark