没有 hadoop,apache 可以 spark 运行 吗?

Can apache spark run without hadoop?

SparkHadoop[=之间是否存在依赖关系24=]?

如果没有,当我 运行 Spark 没有 时,我会错过什么功能吗? Hadoop?

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

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

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

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

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

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

根据 Spark 文档,Spark 可以 运行 没有 Hadoop。

您可以运行将其作为没有任何资源管理器的独立模式。

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

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

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

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

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

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

想知道两者的区别吗?

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

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

  • 用什么,

  • 何时使用

  • 如何使用!!!

Spark 是一个 in-memory 分布式计算引擎。

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

Spark 可以 运行 使用或不使用 Hadoop 组件 (HDFS/YARN)


分布式存储:

由于Spark没有自己的分布式存储系统,所以不得不依赖其中一个存储系统进行分布式计算。

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

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

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


分布式处理:

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

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

是的,无论是否安装了 Hadoop,Spark 都可以 运行 有关详细信息,您可以访问 -https://spark.apache.org/docs/latest/

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

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

英语不好,见谅!

TL;DR

在没有 Hadoop 的情况下使用本地(单节点)或独立(集群)运行 spark,但是仍然 需要 hadoop 依赖项来进行日志记录和一些文件处理。
Windows 强烈不推荐 到 运行 火花!


本地模式

spark有很多运行ning模式,其中一种叫做local will 运行ning without hadoop dependencies
所以,这是第一个问题:如何告诉 spark 我们想要 运行 在本地模式下?
看完这个 official doc,我就在我的 linux os:

上试一试
  1. 必须安装java和scala,不是核心内容所以跳过。
  2. 下载spark包
    有“without hadoop”和“hadoop integrated”2种封装
    most 重要的是“没有 hadoop”并不意味着 运行 没有 hadoop 但只是不与 hadoop 捆绑在一起所以你可以将它与你的自定义 hadoop 捆绑在一起!
    Spark 可以 运行 没有 hadoop(HDFS 和 YARN)但是需要 hadoop 依赖 jar 例如 parquet/avro 等 SerDe class,所以 强烈推荐 使用“集成”包(你会发现缺少一些日志依赖项,如 log4j 和 slfj 以及其他常用工具 class if chose “without hadoop” 包,但所有这些都与 hadoop 集成包捆绑在一起)!
  3. 运行 本地模式
    Most简单的方法就是运行 shell,然后你会看到欢迎日志
# as same as ./bin/spark-shell --master local[*]
./bin/spark-shell

独立模式

同blew,但与步骤3不同

# 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

在 windows?

我认识很多人 运行 windows 上的 spark 只是为了学习,但是 windows 如此不同强烈不推荐 使用 windows.

most 重要的事情是从 here 下载 winutils.exe 并配置系统变量 HADOOP_HOME 指向 winutils 所在的位置。

At this moment 3.2.1 is the most latest release version of spark,but a bug is exist.You will got a exception like Illegal character in path at index 32: spark://xxxxxx:63293/D:\classe when run ./bin/spark-shell.cmd,only startup a standalone cluster then use ./bin/sparkshell.cmd or use lower version can temporary fix this. For more detail and solution you can refer for here