转自博客:http://www.tuicool.com/articles/FVBJBjN
Spark1.0.0生态圈一览
Spark生态圈,也就是BDAS(伯克利数据分析栈),是伯克利APMLab实验室精心打造的,力图在算法(Algorithms)、机器(Machines)、人(People)之间通过大规模集成,来展现大数据应用的一个平台,其核心引擎就是Spark,其计算基础是弹性分布式数据集,也就是RDD。通过Spark生态圈,AMPLab运用大数据、云计算、通信等各种资源,以及各种灵活的技术方案,对海量不透明的数据进行甄别并转化为有用的信息,以供人们更好的理解世界。Spark生态圈已经涉及到机器学习、数据挖掘、数据库、信息检索、自然语言处理和语音识别等多个领域。
随着spark的日趋完善,spark以其优异的性能正逐渐成为下一个业界和学术界的开源大数据处理平台。随着spark1.0.0的发布和spark生态圈的不断扩大,可以预见在今后的一段时间内,Spark将越来越火热。下面我们来看看最近的Spark1.0.0生态圈,也就是BDAS(伯克利数据分析栈),对Spark生态圈做一简单的介绍。
如下图所示,Spark生态圈以Spark为核心引擎,以HDFS、S3、techyon为持久层读写原生数据,以Mesos、YARN和自身携带的 Standalone作为资源管理器调度job,来完成spark应用程序的计算;而这些spark应用程序可以来源于不同的组件,如Spark的批处理应用、SparkStreaming的实时处理应用、Spark SQL的即席查询、BlinkDB的权衡查询、MLlib或MLbase的机器学习、GraphX的图处理、来自SparkR的数学计算等等。更多的新信息请参看伯克利APMLab实验室的项目进展 https://amplab.cs.berkeley.edu/projects/ 或者 Spark峰会信息 http://spark-summit.org/ 。
1:生态圈简介
A:Spark
Spark是一个快速的通用大规模数据处理系统,和Hadoop MapRedeuce相比:
Spark大数据平台之所以能日渐红火,得益于Spark内核架构的优秀:
B:SparkStreaming
SparkStreaming是一个对实时数据流进行高通量、容错处理的流式处理系统,可以对多种数据源(如Kdfka、Flume、Twitter、 Zero和TCP 套接字)进行类似map、reduce、join、window等复杂操作,并将结果保存到外部文件系统、数据库或应用到实时仪表盘。
SparkStreaming流式处理系统特点有:
C:Spark SQL
Spark SQL是一个即席查询系统,其前身是shark,不过代码几乎都重写了,但利用了shark的最好部分内容。Spark SQL可以通过SQL表达式、HiveQL或者Scala DSL在Spark上执行查询。目前Spark SQL还是一个alpha版本。
Spark SQL的特点:
D:BlinkDB
BlinkDB是一个很有意思的交互式查询系统,就像一个跷跷板,用户需要在查询精度和查询时间上做一权衡;如果用户想更快地获取查询结果,那么将牺牲查询结果的精度;同样的,用户如果想获取更高精度的查询结果,就需要牺牲查询响应时间。用户可以在查询的时候定义一个失误边界。
BlinkDB的设计核心思想:
E:MLbase/MLlib
MLlib是Spark实现一些常见的机器学习算法和实用程序,包括分类,回归,聚类,协同过滤,降维,以及底层优化。
MLbase通过边界定义,力图将MLbase打造成一个机器学习平台,让机器学习的门槛更低,让一些可能并不了解机器学习的用户也能方便地使用MLbase这个工具来处理自己的数据,MLbase定义了四个边界:
F:GraphX
GraphX是基于Spark的图处理和图并行计算API。GraphX定义了一个新的概念:弹性分布式属性图,一个每个顶点和边都带有属性的定向多重图;并引入了三种核心RDD:Vertices、Edges、Triplets;还开放了一组基本操作(如subgraph, joinVertices, and mapReduceTriplets),并且在不断的扩展图形算法和图形构建工具来简化图分析工作。
G:SparkR
SparkR是AMPLab发布的一个R开发包,使得R摆脱单机运行的命运,可以作为Spark的job运行在集群上,极大得扩展了R的数据处理能力。
Spark的几个特性:
2:生态圈的应用
Spark生态圈以Spark为核心、以RDD为基础,打造了一个基于内存计算的大数据平台,为人们提供了all-in-one的数据处理方案。人们可以根据不同的场景使用spark生态圈的多个产品来解决应用,而不是使用多个隔离的系统来满足场景需求。下面是几个典型的例子:
A:场景1:历史数据和实时数据分析查询
通过spark进行历史数据分析、spark Streaming进行实时数据分析,最后通过spark SQL或BlinkDB给用户交互查询。
B:场景2:欺诈检测、异常行为的发现
通过spark进行历史数据分析,用MLlib建立数据模型,对Spark Streaming实时数据进行评估,检测并发现异常数据。
C:场景3:社交网络洞察
通过Spark和GraphX计算社交关系,给出建议