原理系列:Spark1.x 生态圈一览

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是一个快速的通用大规模数据处理系统:

  • 内存计算并具有容错性,决定大多数场景运算速度快于MapReduce
  • 提供了支持DAG图的分布式并行计算框架,减少多次计算之间中间结果IO开销
  • 提供Cache机制来支持多次迭代计算或者数据共享,减少IO开销
  • 使用多线程池模型来减少task启动开稍
  • 支持互动和迭代程序

B:Spark SQL

Spark SQL是一个即席查询系统,可以通过SQL表达式、HiveQL或者Scala DSL在Spark上执行查询。

Spark SQL的特点:

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

C:SparkStreaming

SparkStreaming是一个对实时数据流进行高通量、容错处理的流式处理系统,可以对多种数据源(如Kdfka、Flume、Twitter、Zero和TCP 套接字)进行类似map、reduce、join、window等复杂操作,并将结果保存到外部文件系统、数据库或应用到实时仪表盘。

SparkStreaming流式处理系统特点有:

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

D:MLlib

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

E:GraphX

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

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

3、与Hadoop生态环境比较

优势:

支持DAG运算,减少中间数据的传输。

所谓DAG,就是有向不循环图。数据进入第一个计算,得到的结果进入第二个计算;第二个计算得到的结果进入第三个计算……依此类推。

提供了全栈(all-in-one)式,减少中间数据的传输。

即运算框架(Spark)、流式计算(Streaming)、机器学习(MLlib)、图形计算(GraphX)为一体。在其中一个框架中可以调用另一个框架,如:在Streaing中接收数据,使用Spark的运行进行清洗,通过MLlib或GraphX运算得到最终结果。框架无缝转换,无需传递中间数据。

而Hadoop中,通过YARN来集成所有的如MapReduce、Storm、Mahout、Hive、Pig等,这样无法在一个框架中调用另一个,只能顺序执行传递中间数据。

劣势

使用Scala语言

好吧,官方一直声称这是优势。
Scala语言的已经出来很多年,但从未流行过,即一直是小众型语言。虽然软文做很牛逼,但与现实脱离。

不是很成熟

Spark SQL还是是beta版,但软文满天飞

MLlib支持的算法有限

生产环境敢/能用不?

框架本身复杂,想写出性能卓越的程序需要下大功夫

job拆分,task的拆分等,会导致代码的

参考:
http://spark.apache.org/http://blog.csdn.net/book_mmicky/article/details/29362405

时间: 2024-10-10 17:29:23

原理系列:Spark1.x 生态圈一览的相关文章

Spark1.0.0生态圈一览

Problem Description Chinachen is a football fanatic, and his favorite football club is Juventus fc. In order to buy a ticket of Juv, he finds a part-time job in Professor Qu's lab. And now, Chinachen have received an arduous task--Data Processing. Th

通信原理系列(0)——开篇

通信原理系列(0)——开篇 该系列主要讲述通信原理上的一些知识点,作为通信专业出生的人,如果不做点笔记,没过多久差不多就全忘了,在这里做点笔记,给自己提提醒. 目录 1.通信系统模型 2.信道的概念 3.调制与编码

Windows内核原理系列01 - 基本概念

1.Windows API Windows 应用编程接口(API)是针对WIndwos操作系统用户模式的系统编程接口,包含在WindwosSDK中. 2.关于.NET .NET由一个被称为FCL的类库和一个被称为CLR的公共语言运行库组成.FCL是建立在CLR之上的,而CLR是一组标准的COM服务器,提供了垃圾回收,即时编译类型检验等特性.由于CLR的这些特性,使得开发人员的生产效率得以提高..NET框架与组建的关系如下: .NET应用程序 用户模式(托管代码) —————————— 类库(FC

自定义View基础 - 最易懂的自定义View原理系列(1)

前言 自定义View原理是Android开发者必须了解的基础: 在了解自定义View之前,你需要有一定的知识储备: 本文将全面解析关于自定义View中的所有知识基础. 目录 1. View的分类 视图View主要分为两类: 类别 解释 特点 单一视图 即一个View,如TextView 不包含子View 视图组 即多个View组成的ViewGroup,如LinearLayout 包含子View 2. View类简介 View类是Android中各种组件的基类,如View是ViewGroup基类

【深入ASP.NET原理系列】--ASP.NET页面生命周期

前言 ASP.NET页面运行时候,页面将经历一个生命周期,在生命周期中将执行一系列的处理步骤.包括初始化.实例化控件.还原和维护状态.运行时间处理程序代码以及进行呈现.熟悉页面生命周期非常重要,这样我们才能在生命周期的合适阶段编写代码.如果我们能在写代码的时候想着我们现在是在做生命周期的哪一步那将是非常好的. 你可能会说我不清楚还不是一样写代码,反正每次都在Page_load里面写代码 然后页面就出来了我管那么多干什么.所谓知其然如果能知其所以然岂不是更吊?我个人认为做ASP.NET B/S开发

Vue双向绑定的实现原理系列(四):补充指令解析器compile

补充指令解析器compile github源码 补充下HTML节点类型的知识: 元素节点 Node.ELEMENT_NODE(1) 属性节点 Node.ATTRIBUTE_NODE(2) 文本节点 Node.TEXT_NODE(3) CDATA节点 Node.CDATA_SECTION_NODE(4) 实体引用名称节点 Node.ENTRY_REFERENCE_NODE(5) 实体名称节点 Node.ENTITY_NODE(6) 处理指令节点 Node.PROCESSING_INSTRUCTIO

Vue双向绑定的实现原理系列(三):监听器Observer和订阅者Watcher

监听器Observer和订阅者Watcher 实现简单版Vue的过程,主要实现{{}}.v-model和事件指令的功能 主要分为三个部分 github源码 1.数据监听器Observer,能够对数据对象的所有属性进行监听; 实现数据的双向绑定,首先要对数据进行劫持监听,所以我们需要设置一个监听器Observer,用来监听所有属性 2.Watcher将数据监听器和指令解析器连接起来,数据的属性变动时,执行指令绑定的相应回调函数, 1.如果属性发上变化了,就需要告诉订阅者Watcher看是否需要更新

Spark1.0.0 生态圈一览

Spark生态圈,也就是BDAS(伯克利数据分析栈),是伯克利APMLab实验室精心打造的,力图在算法(Algorithms).机器(Machines).人(People)之间通过大规模集成,来展现大数据应用的一个平台,其核心引擎就是Spark,其计算基础是弹性分布式数据集,也就是RDD. 通过Spark生态圈,AMPLab运用大数据.云计算.通信等各种资源,以及各种灵活的技术方案,对海量不透明的数据进行甄别并转化为实用的信息.以供人们更好的理解世界.Spark生态圈已经涉及到机器学习.数据挖掘

算法原理系列:查找

查找 该系列我把它们命名为[算法原理]系列,意不在追求[算法细节],而是从一个宏观的角度来看这些实现,重在数据结构的演变上,及分析它们的算法性能.参考书籍为<算法 第四版>及<算法导论>. 基本概念 字典是算法当中一个基本且常见的概念,类似于那本将单词的释义按照字母顺序排列起来的历史悠久的参考书.在英语字典里,键就是单词,值就是单词对应的定义.发音和词源.字典有时又叫索引,即书本最后将术语按照字母顺序列出以方便查找的那部分.概念很容易理解,但在计算机的世界中该如何实现字典这种数据结