首页技术文章正文

Spark有哪些特点,Spark的生态系统包含哪些组件?

更新时间:2020-10-28 来源:黑马程序员 浏览量:

      Spark在2013年加入Apache孵化器项目,之后获得迅猛的发展,并于2014年正式成为Apache软件基金会的顶级项目。Spark从最初研发到最终成为Apache顶级项目,其发展的整个过程仅用了5年时间。

  目前,Spark生态系统已经发展成为一个可应用于大规模数据处理的统一分析引擎,它是基于内存计算的大数据并行计算框架,适用于各种各样的分布式平台的系统。在Spark生态圈中包含了Spark SQL、Spark Streaming、GraphX、MLlib等组件,这些组件可以非常容易地把各种处理流程整合在一起,而这样的整合,在实际的数据分析过程中是很有意义的。不仅如此,Spark的这种特性还大大减轻了原先需要对各种平台分别管理的依赖负担。下面,通过一张图描述Spark的生态系统,具体如图1所示。

1603876697303_21.jpg

 图1 Spark生态系统

  通过图1可以看出,Spark生态系统主要包含Spark Core、Spark SQL、Spark Streaming、MLlib、GraphX以及独立调度器,下面针对上述组件进行一一介绍。

  Spark Core:Spark核心组件,它实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed Datasets,简称RDD)的API 定义,RDD是只读的分区记录的集合,只能基于在稳定物理存储中的数据集和其他已有的RDD上执行确定性操作来创建。

  Spark SQL:用来操作结构化数据的核心组件,通过Spark SQL可以直接查询Hive、HBase等多种外部数据源中的数据。Spark SQL的重要特点是能够统一处理关系表和RDD。在处理结构化数据时,开发人员无需编写MapReduce程序,直接使用SQL命令就能完成更加复杂的数据查询操作。

  Spark Streaming:Spark提供的流式计算框架,支持高吞吐量、可容错处理的实时流式数据处理,其核心原理是将流数据分解成一系列短小的批处理作业,每个短小的批处理作业都可以使用Spark Core进行快速处理。Spark Streaming支持多种数据源,例如Kafka、Flume以及TCP套接字等数据源。

  MLlib:Spark提供的关于机器学习功能的算法程序库,包括分类、回归、聚类、协同过滤算法等,还提供了模型评估、数据导入等额外的功能,开发人员只需了解一定的机器学习算法知识就能进行机器学习方面的开发,降低了学习成本。

  GraphX:Spark提供的分布式图处理框架,拥有对图计算和图挖掘算法的API接口以及丰富的功能和运算符,极大的方便了对分布式图处理的需求,能在海量数据上运行复杂的图算法。

  独立调度器、Yarn、Mesos:Spark框架可以高效地在一个到数千个节点之间伸缩计算,集群管理器则主要负责各个节点的资源管理工作,为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器(Cluster Manager)上运行,Hadoop Yarn、Apache Mesos以及Spark自带的独立调度器都被称为集群管理器。

  Spark生态系统各个组件关系密切,并且可以相互调用,这样设计具有以下显著优势:

  Spark生态系统包含的所有程序库和高级组件都可以从Spark核心引擎的改进中获益。

  不需要运行多套独立的软件系统,能够大大减少运行整个系统的资源代价。

  能够无缝整合各个系统,构建不同处理模型的应用。

  综上所述,Spark框架对大数据的支持从内存计算、实时处理到交互式查询,进而发展到图计算和机器学习模块。Spark生态系统广泛的技术面,一方面挑战占据大数据市场份额最大的Hadoop,另一方面又随时准备迎接后起之秀Flink、Kafka等计算框架的挑战,从而使Spark在大数据领域更好的发展。

  Spark计算框架在处理数据时,所有的中间数据都保存在内存中。正是由于Spark充分利用内存对数据进行计算,从而减少磁盘读写操作,增大了框架计算效率。同时Spark还兼容HDFS、Hive,可以很好地与Hadoop系统融合,从而弥补MapReduce高延迟的性能缺点。所以说,Spark是一个更加快速、高效的大数据计算平台。

  Spark具有以下几个显著的特点:

  1. 速度快

  根据官方数据统计得出,与Hadoop相比,Spark基于内存的运算效率要快100倍以上,基于硬盘的运算效率也要快10倍以上。Spark实现了高效的DAG执行引擎,能够通过内存计算高效地处理数据流。

  2. 易用性

  Spark编程支持Java、Python、Scala或R语言,并且还拥有超过80种的高级算法,除此之前,Spark还支持交互式的Shell操作,开发人员可以方便的在Shell客户端中使用Spark集群解决问题。

  3. 通用性

  Spark提供了统一的解决方案,适用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX),它们可以在同一个应用程序中无缝的结合使用,大大减少大数据开发和维护的人力成本和部署平台的物力成本。

  4. 兼容性

  Spark可以运行在Hadoop模式、Mesos模式、Standalone独立模式或Cloud中,并且还可以访问各种数据源,包括本地文件系统、HDFS、Cassandra、HBase和Hive等。








猜你喜欢:

实时计算Spark Streaming工作原理是什么?

黑马程序员大数据实战项目有什么特点?

什么是实时计算?常用的实计算框架有哪些?【大数据培训】

分享到:
在线咨询 我要报名
和我们在线交谈!