vlambda博客
学习文章列表

您需要HADOOP来运行SPARK吗?

Hadoop和Apache Spark都是当今蓬勃发展的开源大数据框架。尽管Hadoop和Spark并没有做同样的事情,但是它们是相互关联的。大数据处理无处不在Hadoop的需求。但是,尽管Hadoop具有许多重要的功能和数据处理优势,但它仍存在一个主要缺点。Hadoop的本地批处理引擎MapReduce不如Spark快。

这就是Spark超越Hadoop的优势。除此之外,当今大多数大数据项目都需要批处理工作负载以及实时数据处理。Hadoop的MapReduce并不适合它,只能处理批处理数据。此外,当需要低延迟处理大量数据时,MapReduce无法做到这一点。因此,我们需要在Hadoop之上运行Spark。借助其混合框架和弹性分布式数据集(RDD),可以在运行Spark时将数据透明地存储在内存中。

需要Hadoop运行Spark

Hadoop和Spark不是互斥的,可以一起工作。没有Spark,就不可能在Hadoop中进行实时,快速的数据处理。另一方面,Spark没有用于分布式存储的任何文件系统。但是,许多大数据项目需要处理数PB的数据,这些数据需要存储在分布式存储中。因此,在这种情况下,Hadoop的分布式文件系统(HDFS)与资源管理器YARN一起使用。此外,要以分布式模式运行Spark,请将其安装在Yarn之上。然后使用Spark的高级分析应用程序进行数据处理。因此,如果使用HDFS在分布式模式下运行Spark,则可以通过连接集群中的所有项目来获得最大的收益。因此,HDFS是Hadoop在分布式模式下运行Spark的主要需求。

在Hadoop中运行Spark的不同方法

有三种在Hadoop集群中部署和运行Spark的方法。

  1. 单机版

  2. 超过YARN

  3. 在MapReduce(SIMR)中

独立部署

这是最简单的部署模式。在独立模式下,资源静态分配在Hadoop集群中所有或部分节点上。但是,您可以与MapReduce并行运行Spark。这是Hadoop 1.x的首选部署选择。在这种模式下,Spark管理其集群。

通过YARN部署

没有预安装,或者在这种部署模式下需要管理员访问权限。因此,这是Hadoop和Spark之间集成的简便方法。这是确保安全性的唯一集群管理器。对于生产环境中的大型Hadoop集群而言,这是更好的选择。

MapReduce(SIMR)中的Spark

在这种部署模式下,不需要YARN。可以在MapReduce中启动Rather Spark作业。

您可以在独立模式下在没有Hadoop的情况下运行Spark

Spark和Hadoop更好地结合在一起Hadoop对于运行Spark并不是必不可少的。如果查看Spark文档,则提到如果以独立模式运行Spark,则不需要Hadoop。在这种情况下,您仅需要Mesos之类的资源管理器。此外,只要您不需要Hadoop生态系统中的任何库,就可以在没有Hadoop的情况下运行Spark,并在具有Mesos的Hadoop群集上独立运行。

为什么企业更喜欢使用Hadoop运行Spark?

Spark的生态系统包括–

  • Spark核心–数据处理的基础

  • Spark SQL –基于Shark,有助于数据提取,加载和转换

  • Spark流传输– Light API帮助进行批处理和数据流传输

  • 机器学习库–帮助实施机器学习算法。

  • Graph Analytics(GraphX)–帮助表示弹性分布式图

  • Spark Cassandra连接器

  • Spark R集成

这是生态系统中Spark组件的布局–



但是,该生态系统面临的挑战很少,尚需解决。这些主要处理复杂的数据类型和这些数据的流。这些领域的成功需要将 Spark与Hadoop生态系统的其他组件一起运行。此外,对于许多用例场景,它可以帮助更好地分析和处理数据。在Spark上使用Hadoop发行版可能是企业寻求在Hadoop之上运行Spark的最引人注目的原因。

此外,将Spark与经商业认可的发行版一起使用可确保其在市场上的信誉。与Spark不兼容的其他分布式文件系统可能会在数据处理过程中造成复杂性。因此,企业倾向于限制在没有Hadoop的情况下运行Spark。

没有HDFS的情况下如何运行Spark?

HDFS只是Spark支持的文件系统之一,而不是最终答案。如果您没有在环境中设置Hadoop,该怎么办?此外,Spark是集群计算系统,而不是数据存储系统。因此,运行数据处理所需的全部就是一些外部数据存储源来存储和读取数据。它可能是您桌面上的本地文件系统。此外,除非您在HDFS中使用任何文件路径,否则无需运行HDFS。此外,正如我告诉Spark的那样,它需要一个外部存储源,它可能是一个无SQL数据库,例如Apache Cassandra或HBase或Amazon的S3。要运行Spark,您只需要在Cassandra的同一节点中安装Spark,并使用群集管理器(如YARN或MESOS)即可。在这种情况下,我们也可以在没有Hadoop的情况下运行Spark。

结论

因此, 我们得出结论, 我们可以在 没有Hadoop的情况下运行Spark 。但是,Spark成为多节点模式下分布式计算的有效解决方案。因此,如果我们在HDFS或类似文件系统上运行Spark,则可以实现数据处理的最大利益。但是,Spark和Hadoop都是开源的,由Apache维护。因此它们彼此兼容。此外,使用第三方文件系统解决方案设置Spark可能会很复杂。因此,很容易将Spark与Hadoop集成。因此,我们的问题–您需要Hadoop来运行Spark吗?肯定的答案是–您可以选择任何一种方式。但是,由于它们的兼容性,在Hadoop之上运行Spark是最好的解决方案。