繁体   English   中英

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

[英]Can apache spark run without hadoop?

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

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

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

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

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


分布式存储:

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

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

Cassandra – 非常适合流式数据分析和批处理作业的过度杀伤。

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


分布式处理:

你可以在三种不同的模式下运行 Spark: Standalone、YARN 和 Mesos

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

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

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

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

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

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

此外,如果您使用 Tachyon,它将通过 Hadoop 提高性能。 强烈推荐使用 Hadoop 进行apache spark处理。 在此处输入图片说明

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

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

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

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

是的,您可以在没有 Hadoop 的情况下安装 Spark。 这有点棘手您可以参考 arnon link 使用 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

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

  • 用什么,

  • 何时使用

  • 如何使用 !!!

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

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

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

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

英语不好,见谅!

长话短说

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


本地模式

spark 有很多运行模式,其中一种称为本地运行,无需 hadoop 依赖项。
那么,这是第一个问题:如何告诉 spark 我们要在本地模式下运行?
看完这个官方文档后,我就在我的 linux 操作系统上试一试:

  1. 必须安装java和scala,不是核心内容略过。
  2. 下载火花 package
    有“without hadoop”和“hadoop integrated”2种package
    最重要的是“没有 hadoop”并不意味着在没有 hadoop的情况下运行,而是不与 hadoop 捆绑在一起,因此您可以将它与您的自定义 hadoop 捆绑在一起!
    Spark 可以在没有 hadoop(HDFS 和 YARN)的情况下运行,但需要 hadoop 依赖 jar 例如 parquet/avro 等 SerDe class,因此强烈建议使用“集成”包(你会发现缺少一些日志依赖,如 log4j 和 slfj 和其他常用工具class 如果选择“无 hadoop” package 但所有这些都与 hadoop 集成包捆绑在一起)!
  3. 在本地模式下运行
    最简单的方法就是运行shell,你会看到欢迎日志
# as same as ./bin/spark-shell --master local[*]
./bin/spark-shell

独立模式

与吹一样,但与步骤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。

最重要的是从这里下载winutils.exe并配置系统变量 HADOOP_HOME 指向winutils所在的位置。

目前3.2.1是spark最新的release版本,但是存在bug,运行时会出现Illegal character in path at index 32: spark://xxxxxx:63293/D:\classe ./bin/spark-shell.cmd ,只启动独立集群然后使用./bin/sparkshell.cmd或使用较低版本可以临时解决这个问题。 有关更多详细信息和解决方案,您可以参考此处

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM