Spark详解(一):Spark及其生态圈概述
1. Spark简介
Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。
- Spark 运行速度快
- 易用性好
- 通用性强
- 随处运行
1.1 Spark和MapReduce的比较
Spark继承了其分布式并行计算的优点并改进了MapReduce明显的缺陷,具体如下:
- Spark把中间数据放到内存中,迭代运算效率高。MapReduce中计算结果需要落地,保存到磁盘上,这样势必会影响整体速度,而Spark支持DAG图的分布式并行计算的编程框架,减少了迭代过程中数据的落地,提高了处理效率。
- Spark容错性高。Spark引进了弹性分布式数据集RDD (Resilient Distributed Dataset) 的抽象,它是分布在一组节点中的只读对象集合,这些集合是弹性的,如果数据集一部分丢失,则可以根据“血统”(即充许基于数据衍生过程)对它们进行重建。
- Spark更加通用。
2. Spark生态系统
2.1 Spark Core
Spark Core是整个BDAS生态系统地核心组件,是一个分布式大数据处理框架。Spark Core中提供了多种资源部调度管理,通过内存计算、有向无环图(DAG)等机制来保证分布式计算的快速,并引入了RDD的抽象保证数据的高容错性。
- Spark Core提供了多种运行方式,其中包括Standalone、YARN、MESOS等
- SPark Core提供了有向无环图(DAG)的分布式计算框架,并提供了内存机制来支持多次迭代计算或者数据共享,大大减少了迭代计算之间读取数据的开销。
- 在Spark中引入了RDD的抽象,它是分布在一组节点中的只读对象集合,这些集合是弹性的,如果数据集一部分丢失,则可以根据“血统”对他们进行重建,保证了数据的高容错性。
2.2 Spark Streaming
SparkStreaming是一个对实时数据流进行高通量、容错处理的流式处理系统,可以对多种数据源(如Kdfka、Flume、Twitter、Zero和TCP 套接字)进行类似Map、Reduce和Join等复杂操作,并将结果保存到外部文件系统、数据库或应用到实时仪表盘。
由于使用DStreaming,Spark Streaming具有如下特性:
- 动态负载均衡:Spark Streaming将数据划分为小批量,通过这种方式可以实现对资源更加细粒度的分配。
- 快速故障恢复机制:在Spark中,计算将分成许多小的任务,保证能够在任何节点运行后能够正确进行合并。因此,在某个节点出现的故障的情况,这个节点的任务将均匀的分散在集群中的节点进行计算。
- 批处理、流处理与交互式的一体化:Spark Streaming是将流式计算分解成一系列短小的批处理作业,也就是SparkStreaming的输入数据按照批处理大小,分成一段一段的离散数据流(DStream),每一段数据都转换成Spark中的RDD。
2.3 Spark SQL
Spark SQL允许开发人员直接处理RDD,同时也可查询例如在 Apache Hive上存在的外部数据。Spark SQL的一个重要特点是其能够统一处理关系表和RDD,使得开发人员可以轻松地使用SQL命令进行外部查询,同时进行更复杂的数据分析。
Spark SQL的特点:
引入了新的RDD类型SchemaRDD,可以象传统数据库定义表一样来定义SchemaRDD,SchemaRDD由定义了列数据类型的行对象构成。SchemaRDD可以从RDD转换过来,也可以从Parquet文件读入,也可以使用HiveQL从Hive中获取。
内嵌了Catalyst查询优化框架,在把SQL解析成逻辑执行计划之后,利用Catalyst包里的一些类和接口,执行了一些简单的执行计划优化,最后变成RDD的计算
在应用程序中可以混合使用不同来源的数据,如可以将来自HiveQL的数据和来自SQL的数据进行Join操作。
2.4 BlinkDB
BlinkDB 是一个用于在海量数据上运行交互式 SQL 查询的大规模并行查询引擎,它允许用户通过权衡数据精度来提升查询响应时间,其数据的精度被控制在允许的误差范围内。为了达到这个目标,BlinkDB 使用两个核心思想:
- 一个自适应优化框架,从原始数据随着时间的推移建立并维护一组多维样本;
- 一个动态样本选择策略,选择一个适当大小的示例基于查询的准确性和(或)响应时间需求。
2.5 MLBase/MLlib
MLBase是Spark生态圈的一部分专注于机器学习,让机器学习的门槛更低,让一些可能并不了解机器学习的用户也能方便地使用MLbase。MLBase分为四部分:MLlib、MLI、ML Optimizer和MLRuntime。
- MLRuntime 基于Spark计算框架,将Spark的分布式计算应用到机器学习领域。
- MLlib是Spark实现一些常见的机器学习算法和实用程序,包括分类、回归、聚类、协同过滤、降维以及底层优化,该算法可以进行可扩充;
- MLI 是一个进行特征抽取和高级ML编程抽象的算法实现的API或平台;
- ML Optimizer会选择它认为最适合的已经在内部实现好了的机器学习算法和相关参数,来处理用户输入的数据,并返回模型或别的帮助分析的结果
2.6 GraphX
GraphX是Spark中用于图和图并行计算的API,可以认为是GraphLab和Pregel在Spark上的重写和优化。跟其他分布式图计算框架相比,GraphX最大的优势是:在Spark基础上提供了一栈式数据解决方案,可以高效地完成图计算的完整流水作业。
GraphX的底层设计有以下几个关键点。
- 对Graph视图的所有操作,最终都会转换成其关联的Table视图的RDD操作来完成。这样对一个图的计算,最终在逻辑上,等价于一系列RDD的转换过程。
- 两种视图底层共用的物理数据,由RDD[Vertex-Partition]和RDD[EdgePartition]这两个RDD组成。
- 图的分布式存储采用点分割模式,而且使用partitionBy方法,由用户指定不同的划分策略(PartitionStrategy)。
Spark详解(一):Spark及其生态圈概述相关推荐
- 微服务详解(一):概述
微服务详解(一):概述 微服务详解(二):解决方案 微服务详解(三):设置开发环境 微服务详解(四):领域驱动设计 微服务详解(五):实现微服务 微服务详解(六):部署与测试 微服务详解(七):微服务 ...
- 大数据之spark详解
目录 什么是spark: 功能历史上和hadoop的区别: spark的五大核心模块: ➢ Spark Core 什么是spark: 简单一点Spark 是一种基于内存的快速.通用.可扩展的大数据分析 ...
- Spark详解(十三):Spark Streaming 运行架构分析
1. 运行架构 SparkStreaming的主要功能包括流处理引擎的流数据接收与存储以及批处理作业的生成与管理,而Spark核心负责处理Spark Streaming发送过来的作用.Spark St ...
- Spark详解(四):Spark组件以及消息通信原理
1. Spark核心基本概念 Application(应用程序):指用户编写的Spark应用程序,包含驱动程序(Driver)和分布在集群中多个节点之上的Executor代码,在执行过程中由一个或多个 ...
- Spark详解(二):Spark完全分布式环境搭建
1. 前言 本文搭建了一个由三节点(master.slave1.slave2)构成的Spark完全分布式集群,并通过Spark分布式计算的一个示例测试集群的正确性.本文将搭建一个支持Yarn的完全分布 ...
- Spark详解(三):Spark编程模型(RDD概述)
1. RDD概述 RDD是Spark的最基本抽象,是对分布式内存的抽象使用,实现了以操作本地集合的方式来操作分布式数据集的抽象实现.RDD是Spark最核心的东西,它表示已被分区,不可变的并能够被并行 ...
- Spark详解(五):Spark作业执行原理
Spark的作业和任务调度系统是其核心,它能够有效地进行调度的根本原因是对任务的划分DGG和容错.下面我们介绍一下相关术语: 作业(Job):RDD中由行动操作所生成的一个或者多个调度阶段 调度阶段( ...
- Spark详解(十四):Spark SQL的Join实现
1. 简介 Join是SQL语句中的常用操作,良好的表结构能够将数据分散在不同的表中,使其符合某种范式,减少表冗余.更新容错等.而建立表和表之间关系的最佳方式就是Join操作.Join连接是大数据处理 ...
- Spark详解(十二):Spark Streaming原理和实现
1 简介 SparkStreaming是Spark核心API的一个扩展,具有高吞吐量和容错能力的实时流数据处理系统,可以对多种数据源(如Kdfka.Flume.Twitter.Zero和TCP 套接字 ...
最新文章
- CNN模型之MobileNet
- 查处的数据如何乱序_老司机总结常用镜像方法,让镜像数据更加可靠
- linux ping结果中mdev,Linux下PING中mdev含义
- 证书服务器无法启动,使用 SSL 证书后服务无法启动 - SQL Server | Microsoft Docs
- Windows phone 8 学习笔记(4) 应用的启动
- 图片优化_Web 性能优化: 图片优化让网站大小减少 62%
- UnitTest in .NET(Part 4)
- 双非计算机考研推荐学校传菜电梯,22考研双非院校排名Top100,前3名竟然是这几所!...
- angularJS+requireJS实现controller及directive的按需加载
- 地图的四着色 (CSU-1508)
- HTML fieldset控件
- POJ NOI MATH-7656 李白的酒
- linux 文本编辑器Vim/Vi详细介绍
- Microsoft Dips Its Toe Into The iPhone With Seadragon Mobile
- Small Basic 语言 学习笔记
- PS 拖入图片保持原大小
- 语音识别 卷积神经网络,卷积神经网络字符识别
- excel高级筛选怎么用_Excel集|高级筛选使用方法(多条件筛选)
- python十六进制字符码转中文
- The Hidden Agenda User Simulation Model翻译