概述
原因1:优秀的数据模型和丰富的计算抽象
Spark出现之前,已经有了非常成熟的计算系统MapReduce,并提供高级API(map/reduce),在集群中运行计算,提供容错,从而实现分布式计算。
虽然MapReduce提供了数据访问和计算的抽象,但是数据的重用只是简单地将中间数据写入一个稳定的文件系统(比如HDFS),所以会产生数据复制备份、磁盘I/O和数据序列化,所以在多个计算中遇到需要重用中间结果的操作时效率会很低。这种操作非常常见,比如迭代计算、交互式数据挖掘、图形计算等等。
在认识到这个问题之后,学术界的AMPLab提出了一个新的模型,叫做RDD。RDD是一种容错并行的数据结构(其实可以理解为分布式集合,操作起来就像操作本地集合一样简单)。它允许用户将中间结果数据集显式保存在内存中,并通过控制数据集的分区来优化数据存储处理。与此同时,RDD还提供了丰富的应用编程接口(地图,减少,过滤,foreach,redeceByKey…)来操作数据集。后来,AMPLab在一个叫做Spark的框架中提供并打开了RDD。
总之Spark是从MapReduce发展而来的,保留了分布式并行计算的优势,改善了其明显的缺陷。将中间数据存储在内存中提高了运行速度,提供丰富操作数据的API提高了开发速度。
原因2:完美的生态圈——全栈
目前Spark已经发展成包含多个子项目的集合,包括SparkSQL、Spark Streaming、GraphX、MLlib等。
Spark Core:实现Spark的基本功能,包括RDD、任务调度、内存管理、错误恢复、与存储系统交互等。
sparksql:Spark用来操作结构化数据的包。有了Spark SQL,我们可以用SQL来操纵数据。
Spark Streaming:Spark提供了一个用于流式传输实时数据的组件。提供操作数据流的应用编程接口。
Spark MLlib:提供通用机器学习(ML)功能的库。包括分类、回归、聚类、协同过滤等。,它还提供了额外的支持功能,如模型评估和数据导入。
GraphX(Graph Computing):Spark中用于图形计算的API性能良好,函数和运算符丰富,可以在海量数据上自由运行复杂的图形算法。
群集管理器:Spark旨在高效地将计算从一个计算节点扩展到数千个计算节点。
结构化扩展:处理结构化流,统一离线和实时API。
最后
以上就是爱笑母鸡为你收集整理的Spark为什么受欢迎的全部内容,希望文章能够帮你解决Spark为什么受欢迎所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复