Spark,Hadoop和Cassandra之间有什么关系

时间:2015-06-27 15:32:06

标签: hadoop cassandra apache-spark apache-spark-sql

我的理解是Spark是Hadoop的替代品。但是,在尝试安装Spark时,安装页面会要求安装现有的Hadoop。我无法找到任何澄清这种关系的东西。

其次,Spark显然与Cassandra和Hive有良好的连接。两者都有sql风格的界面。但是,Spark有自己的sql。为什么人们会使用Cassandra / Hive而不是Spark的原生sql?假设这是一个没有现有安装的全新项目?

3 个答案:

答案 0 :(得分:55)

Spark是一种分布式内存处理引擎。它不需要与Hadoop配对,但由于Hadoop是最受欢迎的大数据处理工具之一,因此Spark可以在该环境中很好地工作。例如,Hadoop使用HDFS(Hadoop分布式文件系统)来存储其数据,因此Spark能够从HDFS读取数据,并将结果保存在HDFS中。

对于速度,Spark将其数据集保存在内存中。它通常通过从持久存储中加载数据来启动作业,例如HDFS,Hbase,Cassandra数据库等。一旦加载到内存中,Spark就可以对数据集运行许多转换以计算所需的结果。然后通常将最终结果写回持久存储。

就它是Hadoop的替代品而言,它在某些操作上可能比Hadoop快得多。例如,由于避免了Hadoop的大多数磁盘I / O,因此Spark中的多次传递映射减少操作可以比Hadoop映射减少快得多。 Spark可以读取为Apache Hive格式化的数据,因此Spark SQL可以比使用HQL(Hive查询语言)快得多。

Cassandra有自己的原生查询语言CQL(Cassandra查询语言),但它只是完整SQL的一小部分,对于聚合和即席查询等内容来说非常糟糕。因此,当Spark与Cassandra配对时,它提供了更丰富的查询语言,并允许您进行本机CQL无法提供的数据分析。

Spark的另一个用例是流处理。 Spark可以设置为接收传入的实时数据并以微批处理,然后将结果保存到持久存储中,如HDFS,Cassandra等。

所以spark实际上是一个独立的内存系统,可以与许多不同的分布式数据库和文件系统配对以增加性能,更完整的SQL实现,以及他们可能缺乏这样的流处理的功能。

答案 1 :(得分:3)

我正在写一篇关于Hadoop大学的论文。并且无意中发现了你的问题。 Spark只是在使用Hadoop进行持久化时才会使用它。可以将它与Amazon EC2等其他持久层一起使用。

另一方面,火花正在内存中运行,并且它不是主要用于地图缩减用例,例如Hadoop就是/。

如果您想要更详细的说明,我可以推荐这篇文章:https://www.xplenty.com/blog/2014/11/apache-spark-vs-hadoop-mapreduce/

答案 2 :(得分:0)

Spark中的README.md文件可以解决您的难题:

  

关于Hadoop版本的说明

     

Spark使用Hadoop核心库与HDFS和其他支持Hadoop的对话   存储系统。因为协议在不同版本中已经改变了   Hadoop,您必须针对群集运行的相同版本构建Spark。

     

请参阅构建文档   "Specifying the Hadoop Version"   有关构建特定Hadoop发行版的详细指导,包括   为特定的Hive和Hive Thriftserver发行版构建。