apache spark可以在没有hadoop的情况下运行吗?
Posted
技术标签:
【中文标题】apache spark可以在没有hadoop的情况下运行吗?【英文标题】:Can apache spark run without hadoop? 【发布时间】:2015-11-08 10:25:11 【问题描述】:Spark 和 Hadoop 之间是否存在依赖关系?
如果没有,当我在没有 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的情况下运行吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在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) 一起使用?