大数据之Spark生态架构.docx

大数据之Spark生态架构

Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,最初于2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一。Spark提供了一个全面、统一的框架,用于管理各种有着不同性质的数据集(文本数据、图表数据等)和数据源(批量数据或实时的流数据)对大数据处理的需求。

一、Spark基本概念

Spark是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。Spark最初的设计目标是使数据分析更快——不仅程序运行速度要快,程序编写也要快速、容易。它可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍。为了使程序运行更快,Spark提供了内存计算,减少了迭代计算时的I/O开销;而为了使程序编写更容易,Spark使用简练、优雅的Scala编写,基于Scala提供交互式的编程体系。

二、Spark生态系统

Spark生态系统主要包含SparkCore、SparkSQL、SparkStreaming、StructuredStreaming、MLlib和GraphX等组件,如下图所示。

Spark生态系统

1、Spark组件功能

(1)SparkCore包含Spark的基本功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等,主要面向批量数据处理。SparkCore建立在统一的抽象弹性分布式数据集(ResilientDistributedDataset,RDD)之上,使其可以以基本一致的方式应对不同的大数据处理场景。(2)SparkSQL允许开发人员直接处理RDD,同时也可查询Hive、HBase等外部数据源。SparkSQL的一个重要特点是其能够统一处理关系表和RDD,使得开发人员不需要自己编写Spark应用程序。

(3)SparkStreaming支持高吞吐量、可容错处理的实时流数据处理,将流数据分解成一系列短小的批处理作业,每个短小的批处理作业都可以使用SparkCore进行快速处理。

(4)StructuredStreaming是一种基于SparkSQL引擎构建的、可扩展且容错的流处理引擎。通过一致的API,StructuredStreaming使得使用者可以像编写批处理程序一样编写流处理程序,降低了使用者的使用难度。

(5)MLlib提供常用机器学习算法的实现,包括聚类、分类、回归、协同过滤等,降低了机器学习的门槛,开发人员只要具备一定的理论知识就能进行机器学习工作。

(6)GraphX是Spark中用于图计算的API,可认为是Pregel在Spark上的重写及优化。GraphX性能良好,拥有丰富的功能和运算符,能在海量数据上自如地运行复杂的图算法。

2、Spark主要特点

(1)运行速度快

Spark使用先进的DAG执行引擎,以支持循环数据流与内存计算,基于内存的执行速度可比HadoopMapReduce快上百倍,基于磁盘的执行速度也能快10倍左右。

容易使用

Spark支持使用Scala、Java、Python和R语言进行编程,简洁的API设计有助于用户轻松构建并行程序,并且可以通过SparkShell进行交互式编程。

通用性

Spark提供完整而强大的技术栈,包括SQL查询、流式计算、机器学习和图算法等组件,这些组件可以无缝整合在同一个应用中,足以应对复杂的计算。

运行模式多样

Spark可运行于独立的集群模式中,或者运行于Hadoop中,也可运行于AmazonEC2等环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源。

三、Spark基本流程

Spark的运行流程如下图所示。

Spark运行流程

采用SparkContext创建驱动程序,SparkContext向集群管理器(可以是Standalone、Mesos或YARN)注册并申请运行执行器资源。

集群管理器分配执行器资源并启动StandaloneExecutorBackend,执行器运行情况将随着心跳发送到资源管理器上。

SparkContext通过RDD对象构建DAG,DAG调度器将DAG分解成Stage,并把TaskSet发送给Task调度器。执行器向SparkContext注册并申请Task。

Task调度器将Task发送给执行器运行,同时SparkContext将应用程序代码发送给执行器。

Task在执行器上运行,运行完毕后释放所有资源。

四、Spark适用场景

(1)需要快速处理大数据的场景。Spark通过内存计算能力可以极大地提高大数据处理速度。

(2)需要多次操作特定数据集的

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档