Apache Spark有哪些局限性

Apache Spark是行业中流行和普遍使用的大数据工具之一。Apache Spark已成为业界的热门话题,而且现在很是流行。但工业正在转移朝向apache flink。算法

Apache Spark简介数据库

Apache Spark是为快速计算而设计的开源,闪电般快速的集群计算框架。Apache Spark扩展了MapReduce模型,以有效地将其用于多种计算,包括流处理和交互式查询。Apache Spark的主要功能是内存中的群集计算,能够提升应用程序的处理速度。apache

Spark计划用于涵盖各类工做负载,例如迭代算法,批处理应用程序,流和交互式查询。除了支持这些工做负载,它还减小了维护不一样工具的管理障碍。缓存

Apache Spark框架的核心组件框架

Apache Spark框架由负责Spark功能的主要五个组件组成。这些组成部分是–机器学习

Spark SQL和数据框架–在顶部,Spark SQL容许用户运行SQL和HQL查询以处理结构化和半结构化数据。分布式

SparkStreaming – Spark流传输有助于处理实时流数据,即日志文件。它还包含用于处理数据流的APIide

MLib机器学习– MLib是具备机器学习功能的Spark库。它包含各类机器学习算法,例如回归,聚类,协做过滤,分类等。工具

GraphX –支持图形计算的库称为GraphX。它使用户可以执行图操做。它还提供了图形计算算法。oop

Apache Spark Core API –它是Spark框架的内核,并提供了一个执行Spark应用程序的平台。

下图清楚地显示了Apache Spark的核心组件。

Apache Spark有哪些局限性

Apache Spark的局限性

用户在使用它时必须面对Apache Spark的一些限制。本文彻底侧重于Apache Spark的限制以及克服这些限制的方法。让咱们详细阅读Apache Spark的如下限制以及克服这些Apache Spark限制的方法。

1.没有文件管理系统

Apache Spark中没有文件管理系统,须要与其余平台集成。所以,它依赖于Hadoop等其余平台或任何其余基于云的文件管理系统平台。这是Apache Spark的主要限制之一。

2.不进行实时数据处理

Spark不彻底支持实时数据流处理。在Spark流中,实时数据流被分为几批,称为Spark RDD(弹性分布式数据库)。在这些RDD上应用诸如join,map或reduce等操做来处理它们。处理后,结果再次转换为批次。这样,Spark流只是一个微批处理。所以,它不支持完整的实时处理,可是有点接近它。

3.昂贵

在谈论大数据的经济高效处理时,将数据保存在内存中并不容易。使用Spark时,内存消耗很是高。Spark须要巨大的RAM来处理内存。Spark中的内存消耗很是高,所以用户友好性并不高。运行Spark所需的额外内存成本很高,这使Spark变得昂贵。

4.小文件发行

当咱们将Spark与Hadoop一块儿使用时,存在文件较小的问题。HDFS附带了数量有限的大文件,但有大量的小文件。若是咱们将Spark与HDFS一块儿使用,则此问题将持续存在。可是使用Spark时,全部数据都以zip文件的形式存储在S3中。如今的问题是全部这些小的zip文件都须要解压缩才能收集数据文件。

仅当一个核心中包含完整文件时,才能够压缩zip文件。仅按顺序刻录核心和解压缩文件须要大量时间。此耗时的长过程也影响数据处理。为了进行有效处理,须要对数据进行大量改组。

5.延迟

Apache Spark的等待时间较长,这致使较低的吞吐量。与Apache Spark相比,Apache Flink的延迟相对较低,但吞吐量较高,这使其比Apache Spark更好。

6.较少的算法

在Apache Spark框架中,MLib是包含机器学习算法的Spark库。可是,Spark MLib中只有少数几种算法。所以,较少可用的算法也是Apache Spark的限制之一。

7.迭代处理

迭代基本上意味着重复使用过渡结果。在Spark中,数据是分批迭代的,而后为了处理数据,每次迭代都被调度并一个接一个地执行。

8.窗口标准

在Spark流传输中,根据预设的时间间隔将数据分为小批。所以,Apache Spark支持基于时间的窗口条件,但不支持基于记录的窗口条件。

9.处理背压

背压是指缓冲区太满而没法接收任何数据时,输入/输出开关上的数据累积。缓冲区为空以前,没法传输数据。所以,Apache Spark没有能力处理这种背压,但必须手动完成。

10.手动优化

使用Spark时,须要手动优化做业以及数据集。要建立分区,用户能够自行指定Spark分区的数量。为此,须要传递要固定的分区数做为并行化方法的参数。为了得到正确的分区和缓存,应该手动控制全部此分区过程。

尽管有这些限制,但Apache Spark仍然是流行的大数据工具之一。可是,如今已经有许多技术取代了Spark。Apache Flink是其中之一。Apache Flink支持实时数据流。所以,Flink流比Apache Spark流更好。

总结

每种工具或技术都具备一些优势和局限性。所以,Apache Spark的限制不会将其从游戏中删除。它仍然有需求,而且行业正在将其用做大数据解决方案。最新版本的Spark进行了不断的修改,以克服这些Apache Spark的局限性。

免费领取技术资料及视频
Apache Spark有哪些局限性

相关文章
相关标签/搜索