(转)park1.0.0生态圈一览

 

转自博客:http://www.tuicool.com/articles/FVBJBjN算法

Spark1.0.0生态圈一览shell

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为核心引擎,以HDFSS3techyon为持久层读写原生数据MesosYARN和自身携带的 Standalone做为资源管理器调度job,来完成spark应用程序的计算;而这些spark应用程序能够来源于不一样的组件,如Spark的批处理应用、SparkStreaming的实时处理应用、Spark SQL的即席查询、BlinkDB的权衡查询、MLlibMLbase的机器学习、GraphX的图处理、来自SparkR的数学计算等等。更多的新信息请参看伯克利APMLab实验室的项目进展 https://amplab.cs.berkeley.edu/projects/  或者 Spark峰会信息 http://spark-summit.org/ 网络

 

1:生态圈简介多线程

ASpark 闭包

      Spark是一个快速的通用大规模数据处理系统,和Hadoop MapRedeuce相比:架构

  • 更好的容错性和内存计算
  • 高速,在内存中运算100倍速度于MapReduce
  • 易用,相同的应用程序代码量要比MapReduce2-5
  • 提供了丰富的API
  • 支持互动和迭代程序

    Spark大数据平台之因此能日渐红火,得益于Spark内核架构的优秀:并发

  • 提供了支持DAG图的分布式并行计算框架,减小屡次计算之间中间结果IO开销
  • 提供Cache机制来支持屡次迭代计算或者数据共享,减小IO开销
  • RDD之间维护了血统关系,一旦RDD fail掉了,能经过父RDD自动重建,保证了容错性
  • 移动计算而非移动数据,RDD Partition能够就近读取分布式文件系统中的数据块到各个节点内存中进行计算
  • 使用多线程池模型来减小task启动开稍
  • shuffle过程当中避免没必要要的sort操做
  • 采用容错的、高可伸缩性的akka做为通信框架

BSparkStreaming 框架

      SparkStreaming是一个对实时数据流进行高通量、容错处理的流式处理系统,能够对多种数据源(如KdfkaFlumeTwitter ZeroTCP 套接字)进行相似mapreducejoinwindow等复杂操做,并将结果保存到外部文件系统、数据库或应用到实时仪表盘。

      SparkStreaming流式处理系统特色有:

  • 将流式计算分解成一系列短小的批处理做业
  • 将失败或者执行较慢的任务在其它节点上并行执行
  • 较强的容错能力(基于RDD继承关系Lineage)
  • 使用和RDD同样的语义

CSpark SQL

      Spark SQL是一个即席查询系统,其前身是shark,不过代码几乎都重写了,但利用了shark的最好部份内容。Spark SQL能够经过SQL表达式、HiveQL或者Scala DSLSpark上执行查询。目前Spark SQL仍是一个alpha版本。

      Spark SQL的特色:

  • 引入了新的RDD类型SchemaRDD,能够象传统数据库定义表同样来定义SchemaRDDSchemaRDD由定义了列数据类型的行对象构成。
  • SchemaRDD能够从RDD转换过来,也能够从Parquet文件读入,也可使用HiveQLHive中获取。
  • 在应用程序中能够混合使用不一样来源的数据,如能够未来自HiveQL的数据和来自SQL的数据进行join操做。
  • 内嵌catalyst优化器对用户查询语句进行自动优化

   

DBlinkDB

      BlinkDB是一个颇有意思的交互式查询系统,就像一个跷跷板,用户须要在查询精度和查询时间上作一权衡;若是用户想更快地获取查询结果,那么将牺牲查询结果的精度;一样的,用户若是想获取更高精度的查询结果,就须要牺牲查询响应时间。用户能够在查询的时候定义一个失误边界。

      BlinkDB的设计核心思想:

  • 经过采样,创建并维护一组多维度样本
  • 查询进来时,选择合适的样原本运行查询

EMLbase/MLlib

      MLlibSpark实现一些常见的机器学习算法和实用程序,包括分类,回归,聚类,协同过滤,降维,以及底层优化。

      MLbase经过边界定义,力图将MLbase打形成一个机器学习平台,让机器学习的门槛更低,让一些可能并不了解机器学习的用户也能方便地使用MLbase这个工具来处理本身的数据,MLbase定义了四个边界:

  • ML Optimizer 优化器会选择最适合的、已经实现好了的机器学习算法和相关参数
  • MLI 是一个进行特征抽取和高级ML编程抽象的算法实现的API或平台
  • MLlib 基于Spark的底层分布式机器学习库,能够不断的扩充算法
  • MLRuntime 基于Spark计算框架,将Spark的分布式计算应用到机器学习领域。

   

FGraphX

      GraphX是基于Spark的图处理和图并行计算APIGraphX定义了一个新的概念:弹性分布式属性图,一个每一个顶点和边都带有属性的定向多重图;并引入了三种核心RDDVerticesEdgesTriplets;还开放了一组基本操做(如subgraph, joinVertices, and mapReduceTriplets),而且在不断的扩展图形算法和图形构建工具来简化图分析工做。

   

GSparkR

      SparkRAMPLab发布的一个R开发包,使得R摆脱单机运行的命运,能够做为Sparkjob运行在集群上,极大得扩展了R的数据处理能力。

      Spark的几个特性:

  • 提供了Spark中弹性分布式数据集(RDD)的API,用户能够在集群上经过R shell交互性的运行Spark job
  • 支持序化闭包功能,能够将用户定义函数中所引用到的变量自动序化发送到集群中其余的机器上。
  • SparkR还能够很容易地调用R开发包,只须要在集群上执行操做前用includePackage读取R开发包就能够了,固然集群上要安装R开发包。

   

2:生态圈的应用

      Spark生态圈以Spark为核心、以RDD为基础,打造了一个基于内存计算的大数据平台,为人们提供了all-in-one的数据处理方案。人们能够根据不一样的场景使用spark生态圈的多个产品来解决应用,而不是使用多个隔离的系统来知足场景需求。下面是几个典型的例子:

A:场景1:历史数据和实时数据分析查询

经过spark进行历史数据分析、spark Streaming进行实时数据分析,最后经过spark SQLBlinkDB给用户交互查询。

   

B:场景2:欺诈检测、异常行为的发现

经过spark进行历史数据分析,用MLlib创建数据模型,对Spark Streaming实时数据进行评估,检测并发现异常数据。

   

C:场景3:社交网络洞察

经过SparkGraphX计算社交关系,给出建议

相关文章
相关标签/搜索