使用Spark和Cassandra的优点

时间:2017-03-13 10:52:43

标签: database hadoop apache-spark cassandra bigdata

我已经看到使用Spark和Cassandra的组合相对流行。

我知道Cassandra是一种BigData解决方案,可提供一致性的可靠性,因此适用于实时系统。它还为查询提供了类似SQL的语法,但是它的数据管理方式与普通数据库的管理方式截然不同。

另一方面,Hadoop提供了可靠性的一致性,因此适用于分析系统。它的界面是MapReduce,它现在非常慢而且太低了。所以这就是Sparks的用武之地.Sparks使用Hadoop的HDFS,用更好的架构取代旧的MapReduce,更好地利用内存而不是硬盘,并提供更好的接口,如RDD和数据帧。

所以我的问题是: 为什么我要将Spark与Cassandra结合使用?那有什么好处?为什么不只使用其中一个?

据我所知,Cassandra只会取代HDFS,因此我的可靠性高于一致性,而且我还必须使用RDD /数据帧而不是CQL,而spark会产生CQL引擎盖,让我减少了控制。

3 个答案:

答案 0 :(得分:2)

Spark是一个数据处理框架。您将使用Spark 处理您的数据。

Cassandra是一名DBMS。您将在Cassandra中存储您的数据。

您可以使用CQL在Cassandra中处理数据,如果您可以使用CQL,您可能不需要Spark。但是,一般来说Spark是一种更强大的工具。在实践中,很多人使用Spark从外部源接收数据,处理它并在Cassandra中存储已处理的数据。

答案 1 :(得分:2)

HDFS是一个“文件系统”,hadoop坐在它上面。

还有许多数据库引擎在hadoop和hdfs之上运行,比如hbase,hive等,并利用它的分布式架构。

你不必在hadoop上运行spark,你可以独立运行它。

Cassandra的CQL非常非常基础。您在最新版本中添加了基本聚合函数,但Cassandra并非专为分析工作负载而设计,并且您可能都很难运行分析查询并且会“杀死”您的集群性能。

你无法比较HDFS和Cassandra,就像你无法比较ntfs和mysql。 Cassandra专为基于Dynamo(AWS)和BigTable(Google)概念的繁重工作负载和易于扩展而设计,每秒可处理大量请求。还有替代方案,像HBase一样运行hadoop,Cassandra在我见过的每个基准测试中都获胜(但不相信基准测试,总是根据你的数据和用例测试它)。

那么Spark正试图在那里解决,就是在位于Cassandra的数据之上执行分析查询。使用Spark,您可以从许多来源(RDBMS,文件,hadoop等)获取数据,并对该数据执行分析查询。

另外,这个

  

可靠性超过一致性,因此适合实时系统

是错的。有许多实时系统需要Cassandra无法提供的一致性(非最终),序列化,交易等......

答案 2 :(得分:0)

Cassandra是NoSQL数据库,它在分析功能方面非常有限。
例如,CQL支持单个分区内的聚合,并且没有表连接。
Spark是流处理引擎,它可以使用来自HDFS或数据库的数据。因此,如果要对整个数据集中的数据进行深入分析,则必须使用Spark。 您可以阅读有关Cassandra和大数据的更多信息here