Hadoop,Spark,Flink适用场景与依赖关系
三大分布式计算系统
- Hadoop适合处理离线的静态的大数据;
- Spark适合处理离线的流式的大数据;
- Storm/Flink适合处理在线的实时的大数据。
前言
Spark,是分布式计算平台,是一个用scala语言编写的计算框架,基于内存的快速、通用、可扩展的大数据分析引擎。
Hadoop,是分布式管理、存储、计算的生态系统;包括HDFS(存储)、MapReduce(计算)、Yarn(资源调度)。
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一起使用。
因此,如果使用HDFS在分布式模式下运行Spark,则可以通过连接集群中的所有项目来获得最大的收益。因此,HDFS是Hadoop在分布式模式下运行Spark的主要需求。
您可以在独立模式下在没有Hadoop的情况下运行Spark
Spark和Hadoop更好地结合在一起Hadoop对于运行Spark并不是必不可少的。如果查看Spark文档,则提到如果以Standalone(独立模式)运行Spark,则不需要Hadoop。
在这种情况下,您仅需要Mesos之类的资源管理器。此外,只要您不需要Hadoop生态系统中的任何库,就可以在没有Hadoop的情况下运行Spark,并在具有Mesos的Hadoop群集上独立运行。
没有HDFS的情况下如何运行Spark?
HDFS只是Spark支持的文件系统之一,而不是最终答案。 Spark是集群计算系统,而不是数据存储系统。运行数据处理所需的全部就是一些外部数据存储源来存储和读取数据。
它可能是您桌面上的本地文件系统。此外,除非您在HDFS中使用任何文件路径,否则无需运行HDFS。但是,Spark On Yarn 必须要运行HDFS,因为会使用HDFS存储临时文件。
结论
因此, 我们得出结论, 我们可以在没有Hadoop的情况下运行Spark 。但是,如果我们在HDFS或类似文件系统上运行Spark,
则可以实现数据处理的最大利益。而且,Spark和Hadoop都是开源的,由Apache维护。因此它们彼此兼容。此外,使用第三方文件系统解决方案设置Spark可能会很复杂。
因此,很容易将Spark与Hadoop集成,在Hadoop之上运行Spark是最好的解决方案。