Can apache spark run without hadoop?

Are there any dependencies between Spark and Hadoop?

If not, are there any features I'll miss when I run Spark without Hadoop?

69001 次浏览

是的,没有 Hadoop 火花也能运转。所有核心特性将继续工作,但是您将错过诸如通过 hdfs 轻松地将所有文件(代码以及数据)分发到集群中所有节点等事情。

Spark 可以在没有 Hadoop 的情况下运行,但是它的一些功能依赖于 Hadoop 的代码(例如处理 Parquet 文件)。我们正在 Mesos 和 S3上运行 Spark,这是一个有点棘手的设置,但一旦完成工作真的很好(你可以阅读什么需要正确设置 给你的摘要)。

(编辑)注意: 自2.3.0版本以来,Spark 还增加了对 Kubernetes 的本地支持

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

To store data, it needs fast and scalable file system. You can use S3 or HDFS or any other file system. Hadoop is economical option due to low cost.

另外,如果你使用 Tachyon,它将提高 Hadoop 的性能。 enter image description here

As per Spark documentation, Spark can run without Hadoop.

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

But if you want to run in multi-node setup, you need a resource manager 就像 YARN or Mesos and a distributed file system like HDFS,S3 etc.

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

不。它需要完全成熟的 Hadoop 安装才能开始工作-https://issues.apache.org/jira/browse/SPARK-10944

是的,你可以不用 Hadoop 安装 Spark。 那就有点棘手了 您可以参考 Arnon 链接使用拼花地板在 S3上配置为数据存储。 Http://arnon.me/2015/08/spark-parquet-s3/

火花只是做处理,它使用动态存储器执行任务,但存储的数据,你需要一些数据存储系统。这里 hadoop 与 Spark 一起出现,它为 Spark 提供存储空间。 使用带 Spark 的 Hadoop 的另一个原因是,它们都是开源的,而且与其他数据存储系统相比,它们可以很容易地相互集成。对于像 S3这样的其他存储,应该很难像上面链接中提到的那样配置它。

但是 Hadoop 也有它的处理单元 Mapreduce。

想知道两者的区别吗?

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

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

  • what to use,

  • 何时使用 and

  • how to use !!!

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

Hadoop 是用于分布式存储(HDFS)和分布式处理(纱线)的框架。

Spark can run with or without Hadoop components (HDFS/YARN)


分布式存储:

由于 Spark没有自己的分布式存储系统,因此它必须依赖这些存储系统中的一个来实现分布式计算。

S3 -非紧急批处理作业。当数据本地化不是关键时,S3适合非常特定的用例。

Cassandra -完美的流数据分析和批量作业。

HDFS -非常适合批处理作业,而且不影响数据本地性。


分布式处理:

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

查看下面的 SE 问题,以获得关于分布式存储和分布式处理的详细解释。

我应该为 Spark 选择哪种集群类型?

Yes, Spark can run with or without Hadoop installation for more details you can visit -https://spark.apache.org/docs/latest/

是的,没有 Hadoop 火花也能运行。你可以安装火花在你的本地机器没有 Hadoop。但是 Spark lib 附带了之前的 Haddop 库,例如在本地机器上安装时使用的。

你可以运行没有 hadoop 火花,但火花有依赖于 hadoop win-utils。所以有些功能可能不起作用,如果你想读取 hive 表格从火花,那么你需要 hadoop。

英语不好,原谅我!

DR

使用本地(单个节点)或独立(集群)运行没有 Hadoop 火花,but stills需要 Hadoop 依赖的日志和一些文件处理。
Windows 是 强烈建议不要运行火花!


本地模式

有这么多的运行模式与火花,其中之一是所谓的本地将运行没有 hadoop 依赖。
所以,这里是第一个问题: < strong > 如何告诉 park 我们想在本地模式下运行?
读完这个 官方文件,我就在我的 linux 操作系统上试一试:

  1. 必须安装 java 和 scala,而不是核心内容,所以跳过它。
  2. 下载火花包
    有“没有 hadoop”和“ hadoop 集成”2类包
    The most important thing is "without hadoop" do NOT mean run without hadoop but just not bundle with hadoop so you can bundle it with your custom hadoop!
    Spark can run without hadoop(HDFS and YARN) but need hadoop dependency jar such as parquet/avro etc SerDe class,so 强烈建议 to use "integrated" package(and you will found missing some log dependencies like log4j and slfj and other common utils class if chose "without hadoop" package but all this bundled with hadoop integrated pacakge)!
  3. 以本地模式运行
    最简单的方法是运行 shell,您将看到欢迎日志
# as same as ./bin/spark-shell --master local[*]
./bin/spark-shell

独立模式

和吹的一样,但第三步不一样。

# Starup cluster
# if you want run on frontend
# export SPARK_NO_DAEMONIZE=true
./sbin/start-master.sh
# run this on your every worker
./sbin/start-worker.sh spark://VMS110109:7077


# Submit job or just shell
./bin/spark-shell spark://VMS110109:7077

在窗户上?

我知道很多人在窗户上放火花只是为了学习,但这里是 so different on windows,实际上是 强烈建议不要来使用窗户。

The most important things is download winutils.exe from 给你 and configure system variable HADOOP_HOME to point where winutils located.

目前3.2.1是 park 的最新版本,但是存在一个 bug。在运行 ./bin/spark-shell.cmd时会出现类似于 Illegal character in path at index 32: spark://xxxxxx:63293/D:\classe的异常,只有启动一个独立集群然后使用 ./bin/sparkshell.cmd或使用较低版本才能临时解决这个问题。 要了解更多细节和解决方案,您可以在这里参考 < a href = “ https://stackoverflow. com/a/69804576/6293507”>