spark、hadoop和cassandra之间的关系是什么

mwg9r5ms  于 2021-05-30  发布在  Hadoop
关注(0)|答案(3)|浏览(573)

我的理解是spark是hadoop的替代品。但是,在尝试安装spark时,安装页面会要求安装现有的hadoop。我找不到任何能澄清这种关系的东西。
其次,spark显然与cassandra和hive有很好的连通性。两者都有sql风格的接口。不过,spark有自己的sql。为什么要使用cassandra/hive而不是spark的原生sql?假设这是一个全新的项目,没有现有的安装?

r8xiu3jd

r8xiu3jd1#

我正在为大学写一篇关于hadoop的论文。被你的问题绊倒了。spark只是将hadoop用于持久性,而且只有在您想使用它时才使用。可以将它与其他持久性层(如amazonec2)一起使用。
另一方面,side spark是在内存中运行的,它并不是像hadoop was/is那样主要用于map reduce用例的构建。
如果您喜欢更详细的描述,我可以推荐这篇文章:https://www.xplenty.com/blog/2014/11/apache-spark-vs-hadoop-mapreduce/

wlp8pajw

wlp8pajw2#

spark中的readme.md文件可以解决您的难题:

关于hadoop版本的说明

spark使用hadoop核心库与hdfs和其他支持hadoop的存储系统进行通信。由于hadoop的不同版本中的协议已经发生了变化,因此必须根据集群运行的同一版本构建spark。
请参阅“指定hadoop版本”中的构建文档,以获取有关为特定hadoop发行版构建的详细指导,包括为特定hive和hive-thriftserver发行版构建。

flmtquvp

flmtquvp3#

spark是一个分布式内存处理引擎。它不需要与hadoop配合使用,但是由于hadoop是最流行的大数据处理工具之一,spark的设计可以在这种环境下很好地工作。例如,hadoop使用hdfs(hadoop分布式文件系统)存储数据,因此spark能够从hdfs读取数据,并将结果保存在hdfs中。
为了提高速度,spark将其数据集保存在内存中。它通常通过从持久存储(如hdfs、hbase、cassandra数据库等)加载数据来启动作业。一旦加载到内存中,spark可以对数据集运行许多转换以计算所需的结果。最后的结果通常会写回持久存储。
作为hadoop的替代品,它在某些操作上可以比hadoop快得多。例如,spark中的multi-pass map reduce操作可以比hadoop map reduce快得多,因为hadoop的大部分磁盘i/o都被避免了。spark可以读取为apache配置单元格式化的数据,因此sparksql可以比使用hql(配置单元查询语言)快得多。
cassandra有自己的本地查询语言cql(cassandraquerylanguage),但它是完整sql的一个小子集,对于聚合和即席查询之类的查询非常差。因此,当spark与cassandra结合使用时,它提供了一种功能更丰富的查询语言,并允许您进行本机cql不提供的数据分析。
spark的另一个用例是流处理。spark可以设置为接收传入的实时数据并进行微批量处理,然后将结果保存到持久存储中,如hdfs、cassandra等。
因此spark实际上是一个独立的内存系统,可以与许多不同的分布式数据库和文件系统搭配使用,以提高性能、更完整的sql实现,以及它们可能缺少的流处理功能。

相关问题