天天看点

《Spark大数据分析实战》——1.2节Spark生态系统BDAS

本节书摘来自华章社区《spark大数据分析实战》一书中的第1章,第1.2节spark生态系统bdas,作者高彦杰 倪亚宇,更多章节内容可以访问云栖社区“华章社区”公众号查看

1.2 spark生态系统bdas

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

《Spark大数据分析实战》——1.2节Spark生态系统BDAS

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

(1)spark

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

图1-2所示即为spark的处理流程(主要对象为rdd)。

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

(2)spark sql

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

《Spark大数据分析实战》——1.2节Spark生态系统BDAS

(3)spark streaming

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

(4)graphx

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

(5)mllib

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