大数据之Spark生态架构
Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,最初于2009年由加州大学伯克利分校的AMP Lab开发,并于2010年成为Apache的开源项目之一。Spark提供了一个全面、统一的框架,用于管理各种有着不同性质的数据集(文本数据、图表数据等)和数据源(批量数据或实时的流数据)对大数据处理的需求。
一、Spark基本概念
Spark是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。Spark最初的设计目标是使数据分析更快——不仅程序运行速度要快,程序编写也要快速、容易。它可以将Hadoop集中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍。为了使程序运行更快,Spark提供了内存计算,减少了迭代计算时的I/O开销;而为了使程序编写更容易,Spark使用简练、优雅的Scala编写,基于Scala提供交互式的编程体系。
二、Spark生态系统
Spark生态系统主要包含Spark Core、Spark SQL、Spark Streaming、Structured Streaming、MLlib和GraphX等组件,如图所示。
Spark生态系统
1Spark组件功能
(1)Spark Core包含Spark的基本功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等,主要面向批量数据处理。Spark Core建立在统一的抽象弹性分布式数据集(Resilient Distributed Dataset,RDD)之上,使其可以以基本一致的方式应对不同的大数据处理场景。 (2)Spark SQL允许开发人员直接处理RDD,同时也可查询Hive、HBase等外部数据源。Spark SQL的一个重要特点是其能够统一处理关系表和RDD,使得开发人员不需要自己编写Spark应用程序。
(3)Spark Streaming支持高吞吐量、可容错处理的实时流数据处理,将流数据分解成一系列短小的批处理作业,每个短小的批处理作业都可以使用Spark Core进行快速处理。
(4)Structured Streaming是一种基于Spark SQL引擎构建的、可扩展且容错的流处理引擎。通过一致的API,Structured Streaming使得使用者可以像编写批处理程序一样编写流处理程序,降低了使用者的使用难度。
(5)MLlib提供常用机器学习算法的实现,包括聚类、分类、回归、协同过滤等,降低了机器学习的门槛,开发人员只要具备一定的理论知识就能进行机器学习工作。
(6)GraphX是Spark中用于图计算的API,可认为是Pregel在Spark上的重写及优化。GraphX性能良好,拥有丰富的功能和运算符,能在海量数据上自如地运行复杂的图算法。
2Spark主要特点
hadoop与spark的区别与联系
(1)运行速度快
Spark使用先进的DAG执行引擎,以支持循环数据流与内存计算,基于内存的执行速度可比Hadoop MapReduce快上百倍,基于磁盘的执行速度也能快10倍左右。
(2)容易使用
Spark支持使用Scala、Java、Python和R语言进行编程,简洁的API设计有助于用户轻松构建并行程序,并且可以通过Spark Shell进行交互式编程。
(3)通用性
Spark提供完整而强大的技术栈,包括SQL查询、流式计算、机器学习和图算法等组件,这些组件可以无缝整合在同一个应用中,足以应对复杂的计算。
(4)运行模式多样
Spark可运行于独立的集模式中,或者运行于Hadoop中,也可运行于Amazon EC2等环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源。
三、Spark基本流程
Spark的运行流程如图所示。
Spark运行流程
(1)采用Spark Context创建驱动程序,Spark Context向集管理器(可以是Standalone、Mesos或YARN)注册并申请运行执行器资源。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。