大数据系统-Spark生态系统

目前,Spark已经发展成为包含众多子项目的大数据计算平台。BDAS是伯克利大学提出的基于Spark的数据分析栈(BDAS)。其核心框架是Spark,同时涵盖支持结构化数据SQL查询与分析的查询引擎Spark SQL,提供机器学习功能的系统MLBase及底层的分布式机器学习库MLlib,并行图计算框架GraphX,流计算框架SparkStreaming,近似查询引擎BlinkDB,内存分布式文件系统Tachyon,资源管理框架Mesos等子项目。这些子项目在Spark上层提供了更高层、更丰富的计算范式。

1-1展现了BDAS的主要项目结构图。

 

1-1伯克利数据分析栈(BDAS)主要项目结构图

下面对BDAS的各个子项目进行更详细的介绍。

1Spark

Spark是整个BDAS核心组件,是一个大数据分布式编程框架,不仅实现了MapReduce的算子map 函数和reduce函数及计算模型,还提供更为丰富的算子,例如filterjoingroupByKey等。Spark将分布式数据抽象为RDD(弹性分布式数据集),并实现了应用任务调度、RPC、序列化和压缩,并为运行在其上层组件提供API。其底层采用Scala这种函数式语言书写而成,并且所提供的API深度借鉴Scala函数式的编程思想,提供与Scala类似的编程接口。

1-2所示即为Spark的处理流程(主要对象为RDD):

Stage:阶段


1-2 Spark的任务处理流程图

Spark将数据在分布式环境下分区,然后将作业转化为有向无环图(DAG),并分阶段进行DAG的调度和任务的分布式并行处理。

2Spark SQL

SparkSQL提供在大数据上的SQL查询功能,类似于Shark在整个生态系统的角色,它们可以统称为SQL on Spark。之前,由于Shark的查询编译和优化器依赖Hive,使得Shark不得不维护一套Hive分支。而Spark SQL使用Catalyst做查询解析和优化器,并在底层使用Spark作为执行引擎实现SQL Operator。用户可以在Spark上直接书写SQL,相当于为Spark扩充了一套SQL算子,这无疑更加丰富了Spark的算子和功能。同时Spark SQL不断兼容不同的持久化存储(例如:HDFSHive等),为其发展奠定广阔的空间。

3SparkStreaming

SparkStreaming通过将流数据按指定时间片累积为RDD,然后将每个RDD进行批处理,进而实现大规模的流数据处理。其吞吐量能够超越现有主流流处理框架Storm,并提供丰富的API用于流数据计算。

4GraphX

GraphX基于BSP模型,在Spark之上封装类似Pregel的接口,进行大规模同步全局的图计算,尤其是当用户进行多轮迭代的时候,基于Spark内存计算的优势尤为明显。

5MLlib

MLlibSpark之上的分布式机器学习算法库,同时包括相关的测试和数据生成器。MLlib 支持常见的机器学习问题:分类,回归,聚类以及协同过滤,同时也包括一个底层的梯度下降优化基础算法。


友情推荐:ABC技术研习社

为技术人打造的专属A(AI),B(Big Data),C(Cloud)技术公众号和技术交流社群。



猜你喜欢

转载自blog.csdn.net/gao8658/article/details/16369959