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相比:
  • 更好的容错性和内存计算
  • 快速,在内存中运算100倍速度于MapReduce
  • 易用。同样的应用程序代码量要比MapReduce少2-5倍
  • 提供了丰富的API
  • 支持互动和迭代程序
      
      Spark大数据平台之所以能日渐红火,得益于Spark内核架构的优秀:
  • 提供了支持DAG图的分布式并行计算框架,降低多次计算之间中间结果IO开销
  • 提供Cache机制来支持多次迭代计算或者数据共享,降低IO开销
  • RDD之间维护了血统关系,一旦RDD fail掉了。能通过父RDD自己主动重建,保证了容错性
  • 移动计算而非移动数据,RDD Partition能够就近读取分布式文件系统中的数据块到各个节点内存中进行计算
  • 使用多线程池模型来降低task启动开稍
  • shuffle过程中避免不必要的sort操作
  • 採用容错的、高可伸缩性的akka作为通讯框架

B:SparkStreaming
      SparkStreaming是一个对实时数据流进行高通量、容错处理的流式处理系统,能够对多种数据源(如Kdfka、Flume、Twitter、Zero和TCP 套接字)进行类似map、reduce、join、window等复杂操作,并将结果保存到外部文件系统、数据库或应用到实时仪表盘。
      SparkStreaming流式处理系统特点有:
  • 将流式计算分解成一系列短小的批处理作业
  • 将失败或者运行较慢的任务在其他节点上并行运行
  • 较强的容错能力(基于RDD继承关系Lineage)
  • 使用和RDD一样的语义

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYm9va19tbWlja3k=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

C:Spark SQL
      Spark SQL是一个即席查询系统。其前身是shark,只是代码差点儿都重写了。但利用了shark的最好部分内容。

Spark SQL能够通过SQL表达式、HiveQL或者Scala DSL在Spark上运行查询。眼下Spark SQL还是一个alpha版本号。

      Spark SQL的特点:
  • 引入了新的RDD类型SchemaRDD,能够象传统数据库定义表一样来定义SchemaRDD。SchemaRDD由定义了列数据类型的行对象构成。
  • SchemaRDD能够从RDD转换过来,也能够从Parquet文件读入。也能够使用HiveQL从Hive中获取。
  • 在应用程序中能够混合使用不同来源的数据,如能够将来自HiveQL的数据和来自SQL的数据进行join操作。

  • 内嵌catalyst优化器对用户查询语句进行自己主动优化

D:BlinkDB
      BlinkDB是一个非常有意思的交互式查询系统,就像一个跷跷板,用户须要在查询精度和查询时间上做一权衡。假设用户想更快地获取查询结果。那么将牺牲查询结果的精度。相同的,用户假设想获取更高精度的查询结果,就须要牺牲查询响应时间。用户能够在查询的时候定义一个失误边界。
      BlinkDB的设计核心思想:
  • 通过採样。建立并维护一组多维度样本
  • 查询进来时。选择合适的样本来执行查询

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYm9va19tbWlja3k=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

E:MLbase/MLlib
      MLlib是Spark实现一些常见的机器学习算法和有用程序,包含分类,回归。聚类,协同过滤,降维,以及底层优化。
      MLbase通过边界定义,力图将MLbase打造成一个机器学习平台。让机器学习的门槛更低,让一些可能并不了解机器学习的用户也能方便地使用MLbase这个工具来处理自己的数据,MLbase定义了四个边界:
  • ML Optimizer 优化器会选择最适合的、已经实现好了的机器学习算法和相关參数
  • MLI 是一个进行特征抽取和高级ML编程抽象的算法实现的API或平台
  • MLlib 基于Spark的底层分布式机器学习库,能够不断的扩充算法
  • MLRuntime 基于Spark计算框架,将Spark的分布式计算应用到机器学习领域。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYm9va19tbWlja3k=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

G:SparkR
      SparkR是AMPLab公布的一个R开发包,使得R摆脱单机执行的命运,能够作为Spark的job执行在集群上。极大得扩展了R的数据处理能力。
      Spark的几个特性:
  • 提供了Spark中弹性分布式数据集(RDD)的API。用户能够在集群上通过R shell交互性的执行Spark job。
  • 支持序化闭包功能,能够将用户定义函数中所引用到的变量自己主动序化发送到集群中其它的机器上。
  • SparkR还能够非常easy地调用R开发包。仅仅须要在集群上执行操作前用includePackage读取R开发包就能够了,当然集群上要安装R开发包。


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计算社交关系,给出建议。




Spark1.0.0 生态圈一览的更多相关文章

  1. (转)park1.0.0生态圈一览

    转自博客:http://www.tuicool.com/articles/FVBJBjN Spark1.0.0生态圈一览 Spark生态圈,也就是BDAS(伯克利数据分析栈),是伯克利APMLab实验 ...

  2. Spark1.0.0 学习路径

          2014-05-30 Spark1.0.0 Relaease 经过11次RC后最终公布.尽管还有不少bug,还是非常令人振奋. 作为一个骨灰级的老IT,经过非常成一段时间的消沉,再次被点燃 ...

  3. Spark1.0.0 学习路线指导

    转自:http://www.aboutyun.com/thread-8421-1-1.html 问题导读1.什么是spark?2.spark编程模型是什么?3.spark运维需要具有什么知识?4.sp ...

  4. 基于Spark1.3.0的Spark sql三个核心部分

    基于Spark1.3.0的Spark sql三个核心部分: 1.可以架子啊各种结构化数据源(JSON,Hive,and Parquet) 2.可以让你通过SQL,saprk内部程序或者外部攻击,通过标 ...

  5. Spark-1.0.0 standalone分布式安装教程

    Spark目前支持多种分布式部署方式:一.Standalone Deploy Mode:二Amazon EC2.:三.Apache Mesos:四.Hadoop YARN.第一种方式是单独部署,不需要 ...

  6. spark1.2.0版本SparkSQL使用parquet类型注意事项

    在Spark1.2.0版本中是用parquet存储类型时注意事项: sql语句: select * from order_created_dynamic_partition_parquet; 在spa ...

  7. Spark1.0.0 开发环境高速搭建

          在本系列博客中.为了解析一些概念.解析一些架构.代码測试.搭建了一个实验平台.例如以下图所看到的:       本实验平台是在一台物理机上搭建的.物理机的配置是16G内存,4核8线程CPU ...

  8. spark1.2.0安装

    standalone 安装SCALA 下载.解压.加入环境变量 安装spark1.2.0 下载.解压.加入环境变量 tar zxvf spark--bin-.tgz export SPARK_HOME ...

  9. Spark1.0.0新特性

            Spark1.0.0 release于2014-05-30日正式公布,标志Spark正式进入1.X的时代.Spark1.0.0带来了各种新的特性,并提供了更好的API支持:Spark1 ...

随机推荐

  1. Git_配置别名

    有没有经常敲错命令?比如git status?status这个单词真心不好记. 如果敲git st就表示git status那就简单多了,当然这种偷懒的办法我们是极力赞成的. 我们只需要敲一行命令,告 ...

  2. jquery easyui combobox设置默认选中第一项

    combobox的内容是从后台获取的json, js截取: var data = $('#id').combobox('getData'); $("#id ").combobox( ...

  3. 基于springboot的spring JSR validation 后台参数验证

    springboot集成JSR参数校验: 1. 导入maven <dependency> <groupId>org.springframework.boot</group ...

  4. arcgis andriod GeometryEngine使用

    intersectionMenuItem.setChecked(true); showGeometry(GeometryEngine.intersection(inputPolygon1, input ...

  5. velocity+spring mvc+spring ioc+ibatis初试感觉(与struts+spring+hibernate比较)

    velocity+spring mvc+spring ioc+ibatis框架是我现在公司要求采用的,原因是因为阿里巴巴和淘宝在使用这样的框架,而我公司现在还主要是以向阿里巴巴和淘宝输送外派人员为 主 ...

  6. Android之ListView和GridVIew加载图片

    清除缓存:ImageLoader 对象 . clearCache(); 使用: ImageLoader loader = new ImageLoader(ApplicationContext cont ...

  7. TCP的三次握手与四次挥手(详解+动图)

    背景描述 通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之间的通信.但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在 ...

  8. GPGPU OpenCL 获取kernel函数编译信息

    使用OpenCL编程时,kernel写成一个单独的文件或者将文件内容保存在一个string中.可以使用clBuildProgram对kernel进行编译链接(compiles & links) ...

  9. IDEA热部署基于maven的web项目

    第一步:首先先创建web项目 按照向导一步一步完成项目创建,我创建的示例项目为hotdeploddemo     第二步:设置项目的web资源         下图中的路径要修改正确,指向src/ma ...

  10. SQL Server基础知识三十三问 (7-14)

    8. 一般什么时候使用update_statistics命令? 答:  这个命令基本上是在很多数据被处理过了之后才使用的. 如果大量的删除, 修改, 或这大量的数据插入已经发生了, 那么index就需 ...