9.3.3.1 Spark SQL
Spark SQL作为Spark大数据框架的一部分,主要用于结构化数据处理和对Spark数据执行类SQL的查询,并且与Spark生态的其他模块无缝结合。Spark SQL兼容SQL,Hive,JSON、JDBC和ODBC等操作。Spark SQL的前身是Shark,而Shark的前身是Hive。Shark比Hive在性能上要高出一到两个数量级,而Spark SQL比Shark在性能上又要高出一到两个数量级。
9.3.3.2 MLlib
MLlib是一个分布式机器学习库,即在Spark平台上对一些常用的机器学习算法进行了分布式实现,随着版本的更新,它也在不断扩充新的算法。MLlib支持多种分布式机器学习算法,如分类、回归、聚类等。MLlib已经实现的算法如表9-2所示。
表9-2 MLlib已经实现的算法
9.3.3.3 GraphX
GraphX是构建于Spark上的图计算模型,GraphX利用Spark框架提供的内存缓存RDD、DAG和基于数据依赖的容错等特性,实现高效健壮的图计算框架。GraphX的出现,使得Spark生态系统在大图处理和计算领域得到了更加的完善和丰富,同时其与Spark生态系统其他组件进行很好的融合,以及强大的图数据处理能力,使其广泛地应用在多种大图处理的场景中。
GraphX实现了很多能够在分布式集群上运行的并行图计算算法,而且还拥有丰富的API接口。因为图的规模大到一定的程度之后,需要将算法并行化,以方便其在分布式集群上进行大规模处理。GraphX优势就是提升了数据处理的吞吐量和规模。
9.3.3.4 Spark Streaming
Spark Streaming是Spark系统中用于处理流数据的分布式流处理框架,扩展了Spark流式大数据处理能力。Spark Streaming将数据流以时间片为单位进行分割形成RDD,能够以相对较小的时间间隔对流数据进行处理。Spark Streaming还能够和其余Spark生态的模块如Spark SQL,GraphX,MLlib等Spark生态的其余模块进行无缝的集成,以便联合完成基于实时流数据处理的复杂任务。如果要用一句话来概括Spark Streaming的处理思路的话,那就是“将连续的数据持久化、离散化,然后进行批量处理”。(www.xing528.com)
(1)数据持久化。将从网络上接收到的数据先暂时存储下来,为事件处理出错时的事件重演提供可能。
(2)数据离散化。数据源源不断地涌进,永远没有尽头。既然不能穷尽,那么就将其按时间分片。比如采用1 min为时间间隔,那么在连续的1 min内收集到的数据就集中存储在一起。
(3)批量处理。将持久化下来的数据分批进行处理,处理机制套用之前的RDD模式。
Spark Streaming的计算流程如图9-10所示。
图9-10 Spark Streaming的计算流程
(1)Spark Streaming将实时输入的数据流(Data Stream)分解成一系列短小的批处理作业(Baches)。也就是把Spark Streaming的输入数据按照Batch Size(如1 s)分成一段一段的数据(Discretized Stream,简称DStream)。
(2)将每一段数据(DStream)都转换成Spark中的RDD,保存到Spark的内存中,由内存管理器(Memory Manager)进行管理,记录下RDD生成的轨迹。
(3)将Spark Streaming中对DStream的Transformation操作变为针对Spark中对RDD的Transformation操作,交给Spark中的任务调度程序(Task Scheduler)。
(4)执行RDD的Action操作,将任务提交给计算引擎,将批处理的计算结果(Batches Of Results)输出。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。