1. 目的
本章我们将讨论Spark的限制(不支持实时处理,小文件的问题,没有专门的文件管理系统等)。
2. Spark的限制
正如我们所知,Spark是业界广泛使用的下一代大数据工具,但是它存在一定的限制。
1)不支持实时处理
在Spark Streaming中,将到达的实时数据流分成预定义时间间隔的批次,并将每批数据视为RDD(Resilient Distributed Dataset),然后使用map、join、reduce等操作处理这些RDD,分批返回这些操作的结果。因此,这是准实时处理(不是实时处理)实时数据。
2)小文件问题
在生成的RDD中,每个文件都将成为一个分区,因此RDD中会有大量的微小分区。如果我们希望在处理过程中提高效率,RDD应该被重新分区,这需要在网络上进行大规模的洗牌(Shuffle)。
3)没有文件管理系统
Spark没有自己的文件管理系统,因此它依赖于其他一些平台,如Hadoop或其他基于云的平台。
4)昂贵
如果我们希望经济高效地处理大数据,内存容量可能会成为瓶颈,因为将数据保存在内存中非常昂贵,内存消耗非常高。Spark需要大量内存来运行,因此Spark的成本相当高。
5)算法的数量较少
Spark MLlib里的算法数量较少。
6)手动优化
Spark作业需要手动优化,并且适用于特定的数据集。如果我们想在Spark中正确的分区和缓存,那么应该手动控制。
7)迭代处理
在Spark中,数据批量迭代,每个迭代单独的计划和执行。
8)延迟
与Flink相比,Spark具有更高的延迟。
9)窗口条件
Spark不支持基于记录的窗口条件,它只有基于时间的窗口条件。
3. 结论
虽然Spark有许多限制,但在大数据解决方案市场上仍然很流行。有各种技术正在赶超Spark,比如Flink能够更好的对流进行实时处理。