Spark1.0.1 生态圈

Spark1.0.1 生态圈_第1张图片

Spark                              

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

  • 更好的容错性和内存计算

  • 高速,在内存中运算100倍速度于MapReduce

  • 易用,相同的应用程序代码量要比MapReduce少2-5倍

  • 提供了丰富的API

  • 支持互动和迭代程序

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

  • 弹性分布式RDD

  • 提供了支持DAG图的分布式并行计算框架,减少多次计算之间中间结果IO开销

  • 提供Cache机制来支持多次迭代计算或者数据共享,减少IO开销

  • RDD之间维护了血统关系,一旦RDD fail掉了,能通过父RDD自动重建,保证了容错性

  • 移动计算而非移动数据,RDD Partition可以就近读取分布式文件系统中的数据块到各个节点内存中进行计算

  • 使用多线程池模型来减少task启动开稍

  • shuffle过程中避免不必要的sort操作

  • 采用容错的、高可伸缩性的akka作为通讯框架

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优化器对用户查询语句进行自动优化

Spark Streaming

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

      SparkStreaming流式处理系统特点有:

  • 将流式计算分解成一系列短小的批处理作业

  • 将失败或者执行较慢的任务在其它节点上并行执行

  • 较强的容错能力(基于RDD继承关系Lineage)

  • 使用和RDD一样的语义

GraphX

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

MLBase/MLlib

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

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

  • ML Optimizer 优化器会选择最适合的、已经实现好了的机器学习算法和相关参数

  • MLI 是一个进行特征抽取和高级ML编程抽象的算法实现的API或平台

  • MLlib 基于Spark的底层分布式机器学习库,可以不断的扩充算法

  • MLRuntime 基于Spark计算框架,将Spark的分布式计算应用到机器学习领域。

Tachyon

Tachyon是一个高效的分布式存储系统。目前发布的为整体项目的部分功能(缓存部分),此部分功能在一次写、多次读的环境下为系统的性能带来最大的提升。

总结:

总的来说,Spark生态圈以Spark为核心、以RDD为基础,打造了一个基于内存计算的大数据平台,为人们提供了all-in-one的数据处理方案。人们可以根据不同的场景使用spark生态圈的多个产品来解决应用,而不是使用多个隔离的系统来满足场景需求。

你可能感兴趣的:(spark生态圈)