Spark 概念学习系列之Spark生态系统BDAS(五)

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介:

  目前,Spark已经发展成为包含众多子项目的大数据计算平台。 伯克利将Spark的整个生态系统称为伯克利数据分析栈(BDAS)。 其核心框架是Spark,同时BDAS涵盖支持结构化数据SQL查询与分析的查询引擎Spark SQL和Shark,提供机器学习功能的系统MLbase底层的分布式机器学习库MLlib、 并行图计算框架GraphX、 流计算框架Spark Streaming、 采样近似计算查询引擎BlinkDB、 内存分布式文件系统Tachyon、 资源管理框架Mesos等子项目。 这些子项目在Spark上层提供了更高层、 更丰富的计算范式。
     

              伯克利数据分析栈(BDAS)项目结构图

 

 

 

 

下面对BDAS的各个子项目进行更详细的介绍
(1)Spark
    Spark是整个BDAS的核心组件,是一个大数据分布式编程框架,不仅实现了MapReduce的算子map函数和reduce函数及计算模型,还提供更为丰富的算子,如filter、 join、groupByKey等。 Spark将分布式数据抽象为弹性分布式数据集(RDD),实现了应用任务调度、 RPC、 序列化和压缩,并为运行在其上的上层组件提供API。 其底层采用Scala这种函数式语言书写而成,并且所提供的API深度借鉴Scala函数式的编程思想,提供与Scala类似的编程接口。
   下图是Spark的处理流程(主要对象为RDD)。

              Spark的任务处理流程图

       Spark将数据在分布式环境下分区,然后将作业转化为有向无环图(DAG),并分阶段进行DAG的调度和任务的分布式并行处理。

 

 


(2)Shark
      Shark是构建在Spark和Hive基础之上的数据仓库。 目前,Shark已经完成学术使命,终止开发,但其架构和原理仍具有借鉴意义。 它提供了能够查询Hive中所存储数据的一套SQL接口,兼容现有的Hive QL语法。 这样,熟悉Hive QL或者SQL的用户可以基于Shark进行快速的Ad-Hoc、 Reporting等类型的SQL查询。 Shark底层复用Hive的解析器、 优化器以及元数据存储和序列化接口。 Shark会将Hive QL编译转化为一组Spark任务,进行分布式运算。

 

 

 


(3)Spark SQL
      Spark SQL提供在大数据上的SQL查询功能,类似于Shark在整个生态系统的角色,它们可以统称为SQL on Spark。 之前,Shark的查询编译和优化器依赖于Hive,使得Shark不得不维护一套Hive分支,而Spark SQL使用Catalyst做查询解析和优化器,并在底层使用Spark作为执行引擎实现SQL的Operator。 用户可以在Spark上直接书写SQL,相当于为Spark扩充了一套SQL算子,这无疑更加丰富了Spark的算子和功能,同时Spark SQL不断兼容不同的持久化存储(如HDFS、 Hive等),为其发展奠定广阔的空间。

 

 

 


(4)Spark Streaming
     Spark Streaming通过将流数据按指定时间片累积为RDD,然后将每个RDD进行批处理,进而实现大规模的流数据处理。 其吞吐量能够超越现有主流流处理框架Storm,并提供丰富的API用于流数据计算。

 

 


(5)GraphX
     GraphX基于BSP模型,在Spark之上封装类似Pregel的接口,进行大规模同步全局的图计算,尤其是当用户进行多轮迭代时,基于Spark内存计算的优势尤为明显。

 

 


(6)Tachyon
     Tachyon是一个分布式内存文件系统,可以理解为内存中的HDFS。 为了提供更高的性能,将数据存储剥离Java Heap。 用户可以基于Tachyon实现RDD或者文件的跨应用共享,并提供高容错机制,保证数据的可靠性。

 

 

 


(7)Mesos
     Mesos是一个资源管理框架(注:Spark自带的资源管理框架是Standalone。),提供类似于YARN的功能。 用户可以在其中插件式地运行Spark、 MapReduce、 Tez等计算框架的任务。 Mesos会对资源和任务进行隔离,并实现高效的资源任务调度。

   请移步,

Spark standalone模式的安装(spark-1.6.1-bin-hadoop2.6.tgz)(master、slave1和slave2)

 

 

 


(8)BlinkDB
     BlinkDB是一个用于在海量数据上进行交互式SQL的近似查询引擎。 它允许用户通过在查询准确性和查询响应时间之间做出权衡,完成近似查询。 其数据的精度被控制在允许的误差范围内。 为了达到这个目标,BlinkDB的核心思想是:通过一个自适应优化框架,随着时间的推移,从原始数据建立并维护一组多维样本;通过一个动态样本选择策略,选择一个适当大小的示例,然后基于查询的准确性和响应时间满足用户查询需求。

 

          

 

 

 

 

 

 

 

 

 

 

Spark 组成---大一统软件栈

        

 

Spark Core

  ● Spark Core 实现了Spark 的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。

  ● RDD(resilient distributed dataset,弹性分布式数据集)的API 定义。RDD是一个抽象的数据集,提供对数据并行和容错的处理。初次使用RDD时,其接口有点类似Scala的Array,提供map,filter,reduce等操作。但是,不支持随机访问。刚开始不太习惯,但是逐渐熟悉函数编程和RDD 的原理后,发现随机访问数据的场景并不常见。

 

 

 

Spark SQL

  ● Spark SQL 是Spark 用来操作结构化数据的程序包。

  ● Spark SQL 直接兼容Hive SQL。

  ● 多数据源(Hive表、Parquet、JSON等);Spark SQL 可以操作Hive表,可以读取Parquet文件(列式存储结构),可以读取JSON文件,还可以处理hdfs上面的文件。

  ● SQL与RDD编程结合使用。

  ● 从Shark演变到Spark SQL

 

 

 

 

Spark Streaming

  ● Spark 提供的对实时数据进行流式计算的组件。

  ● 微批处理(Storm、Flink)-------从批处理到流处理

 

 

 

Spark MLlib

  ● Spark 提供的包含常见机器学习(ML)功能的库。

  ● 分类、回归、聚类、协同过滤等

  ● 模型评估、数据导入等额外的支持功能

  ● Mahout(Runs on distributed Spark, H2O, and Flink)

 

 

GraphX

  ● GraphX是Spark 提供的图计算和图挖掘的库。

  ● 与Spark Streaming 和Spark SQL 类似,GraphX 也扩展了Spark 的RDD API,能用来创建一个顶点和边都包含任意属性的有向图

  ● GraphX还支持针对图的各种计算和常见的图算法。

 

 


本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/5706978.html,如需转载请自行联系原作者

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
7月前
|
分布式计算 API Spark
Spark学习--day05、SparkCore电商网站实操、SparkCore-工程代码
Spark学习--day05、SparkCore电商网站实操、SparkCore-工程代码
128 11
|
2月前
|
分布式计算 大数据 Java
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
59 5
|
2月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
52 3
|
2月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
68 0
|
2月前
|
分布式计算 算法 Spark
spark学习之 GraphX—预测社交圈子
spark学习之 GraphX—预测社交圈子
45 0
|
2月前
|
分布式计算 Scala Spark
educoder的spark算子学习
educoder的spark算子学习
19 0
|
2月前
|
存储 分布式计算 算法
大数据-105 Spark GraphX 基本概述 与 架构基础 概念详解 核心数据结构
大数据-105 Spark GraphX 基本概述 与 架构基础 概念详解 核心数据结构
54 0
|
2月前
|
消息中间件 分布式计算 Kafka
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
44 0
|
3月前
|
分布式计算 Shell Scala
学习使用Spark
学习使用Spark
111 3
|
4月前
|
分布式计算 Shell Scala
如何开始学习使用Spark?
【8月更文挑战第31天】如何开始学习使用Spark?
109 2