apache spark可以在没有hadoop的情况下运行吗?

Posted

技术标签:

【中文标题】apache spark可以在没有hadoop的情况下运行吗?【英文标题】:Can apache spark run without hadoop? 【发布时间】:2015-11-08 10:25:11 【问题描述】:

SparkHadoop 之间是否存在依赖关系?

如果没有,当我在没有 Hadoop 的情况下运行 Spark 时,我会错过哪些功能?

【问题讨论】:

【参考方案1】:

您可以在没有 hadoop 的情况下运行 spark,但 spark 依赖于 hadoop win-utils。所以有些功能可能不起作用,如果你想从 spark 读取 hive 表,那么你需要 hadoop。

【讨论】:

【参考方案2】:

是的,spark 可以在没有 Hadoop 的情况下运行。您可以在没有 Hadoop 的情况下在本地机器上安装 spark。但是 Spark lib 带有 pre Haddop 库,即在本地机器上安装时使用。

【讨论】:

【参考方案3】:

根据 Spark 文档,Spark 可以在没有 Hadoop 的情况下运行。

您可以在没有任何资源管理器的情况下以独立模式运行它。

但如果你想在多节点设置中运行,你需要一个资源管理器如 YARN 或 Mesos 以及一个分布式文件系统如 HDFS、S3 等。

【讨论】:

【参考方案4】:

Spark 可以在没有 Hadoop 的情况下运行,但它的某些功能依赖于 Hadoop 的代码(例如处理 Parquet 文件)。我们在 Mesos 和 S3 上运行 Spark,设置起来有点棘手,但一旦完成后运行良好(您可以阅读正确设置所需内容的摘要here)。

(编辑)注意:从 2.3.0 版本开始,Spark 还添加了对 Kubernetes 的原生支持

【讨论】:

【参考方案5】:

是的,Spark 可以在安装或不安装 Hadoop 的情况下运行,有关详细信息,您可以访问 -https://spark.apache.org/docs/latest/

【讨论】:

【参考方案6】:

默认情况下,Spark 没有存储机制。

为了存储数据,它需要快速且可扩展的文件系统。您可以使用 S3 或 HDFS 或任何其他文件系统。由于成本低,Hadoop 是经济的选择。

此外,如果您使用 Tachyon,它将提高 Hadoop 的性能。强烈推荐使用 Hadoop 进行 apache spark 处理。

【讨论】:

【参考方案7】:

Spark 是一个内存分布式计算引擎。

Hadoop 是分布式存储 (HDFS) 和分布式处理 (YARN) 的框架。

Spark 可以在有或没有 Hadoop 组件 (HDFS/YARN) 的情况下运行


分布式存储:

由于Spark没有自己的分布式存储系统,它必须依赖这些存储系统之一进行分布式计算。

S3 – 非紧急批处理作业。当数据局部性不重要时,S3 适合非常具体的用例。

Cassandra – 非常适合流式数据分析和批处理作业。

HDFS – 非常适合批处理作业,而不会影响数据局部性。


分布式处理:

您可以在三种不同的模式下运行 Spark:独立、YARN 和 Mesos

请查看以下 SE 问题,了解有关分布式存储和分布式处理的详细说明。

Which cluster type should I choose for Spark?

【讨论】:

【参考方案8】:

是的,您可以在没有 Hadoop 的情况下安装 Spark。 那会有点棘手 您可以参考 arnon 链接使用 parquet 在 S3 上配置作为数据存储。 http://arnon.me/2015/08/spark-parquet-s3/

Spark 只做处理,它使用动态内存来执行任务,但要存储数据,您需要一些数据存储系统。这里 hadoop 与 Spark 一起发挥作用,它为 Spark 提供存储。 将 Hadoop 与 Spark 结合使用的另一个原因是它们是开源的,并且与其他数据存储系统相比,它们都可以轻松地相互集成。对于像 S3 这样的其他存储,您应该像上面链接中提到的那样配置它。

但 Hadoop 也有其称为 Mapreduce 的处理单元。

想知道两者的区别吗?

查看这篇文章:https://www.dezyre.com/article/hadoop-mapreduce-vs-apache-spark-who-wins-the-battle/83

我想这篇文章会帮助你理解

使用什么,

何时使用

怎么用!!!

【讨论】:

【参考方案9】:

没有。它需要完整的 Hadoop 安装才能开始工作 - https://issues.apache.org/jira/browse/SPARK-10944

【讨论】:

这是不正确的,在当前版本中没有 Hadoop 也可以正常工作。 @ChrisChambers 您愿意详细说明一下吗?对该问题的评论说“事实上,无论如何,Spark 确实需要 Hadoop 类”,并且在下载页面上,只有为特定 Hadoop 版本预构建的选项或使用用户提供的 Hadoop 的选项。 docs 说“Spark 使用 Hadoop 客户端库用于 HDFS 和 YARN。”而且这种依赖似乎不是可选的。 @NikoNyrh 正确。我刚刚尝试执行“用户提供的 Hadoop”下载工件并立即获得堆栈跟踪。我还希望 Spark 的类路径与核心 Hadoop 类分离。但是出于原型设计和测试的目的,除了下载的大小(120 MB)之外,我没有任何问题。那好吧。干杯! 有问题的堆栈跟踪:$ ./spark-shell Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream at org.apache.spark.deploy.SparkSubmitArguments$$anonfun$mergeDefaultSparkProperties$1.apply(SparkSubmitArguments.scala:118) at org.apache.spark.deploy.SparkSubmitArguments$$anonfun$mergeDefault at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 7 more 【参考方案10】:

是的,当然。 Spark 是一个独立的计算框架。 Hadoop是一个带有MapReduce计算框架的分布式存储系统(HDFS)。 Spark 可以从 HDFS 以及任何其他数据源(例如传统数据库(JDBC)、kafka 甚至本地磁盘)获取数据。

【讨论】:

【参考方案11】:

是的,spark 可以在没有 hadoop 的情况下运行。所有核心 spark 功能都将继续工作,但您会错过通过 hdfs 将所有文件(代码和数据)轻松分发到集群中的所有节点等功能。

【讨论】:

以上是关于apache spark可以在没有hadoop的情况下运行吗?的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop和Apache Spark的异同

hadoop mapreduce 分桶

如何在Spark提交中使用s3a和Apache spark 2.2(hadoop 2.8)?

多节点 hadoop 集群中的 Apache Spark Sql 问题

快速 Hadoop 分析(Cloudera Impala vs Spark/Shark vs Apache Drill)

如何在 Spark Submit 中将 s3a 与 Apache spark 2.2(hadoop 2.8) 一起使用?