Spark 基础

--------“道路是曲折的,前途时光明的。”

一. Spark 是什么

分布式计算框架,核心是一个对由许多计算任务组成的、运行在多个工作机器或者是一个计算集群上的应用进行调度、分发以及监控的计算引擎。
Spark核心引擎的特点——速度快、通用
大一统的软件栈,其组件——Spark Core、Spark SQL(结构化数据)、Spark Streaming(实时计算)、MLib(机器学习)、GraphX(图计算)
设计原理——组件之间密切结合,好处:1)均可从底层优化改进中获益; 2)运行整个软件栈的代价减少; 3)构建无缝整合不同处理模型的应用

Spark 基础_第1张图片
Spark软件栈.png

二. Spark 特点:

  1. 分布式:多台机器并行化
  2. 基于内存存储(某些情况下也会基于磁盘,比如内存中放不下的时候)
  3. 特别适合于迭代计算
  4. 高效的容错机制

三. 各组件

1 Spark Core

1)实现Spark的基本功能,包括任务调度、内存管理、错误恢复、与存储系统交互等模块。
2)包括对弹性分布式数据集(RDD)的API定义(RDD表示分布在多个计算节点上可以并行操作的元素集合,是Spark主要的编程抽象),Spark Core提供了创建和操作这些集合的多个API。

2 Spark SQL

Spark SQL是Spark用来操作结构化数据的程序包,可使用SQL或者HQL来查询数据。
1)扩展了Spark的RDD API

3 Spark Streaming

Spark提供的对实时数据进行流式计算的组件。
1)提供了用来操作数据流的API,并且与Spark Core中的RDD API高度对应。
2)从底层来看,Spark Streaming支持Spark Core同级别的容错性、吞吐量以及可伸缩性

4 MLib

提供机器学习功能的程序库
1)提供了很多种机器学习算法,包括分类、回归、聚类、协同过滤等
2)提供了模型评估、数据导入等额外的支持功能
3)还提供了一种更底层的机器学习原语,包括一个通用的速度下降优化算法
所有这些算法都被设计为可以在集群上轻松伸缩的架构。

5 Graphx

用来操作图(比如社交网络的)的程序库,可以进行并行的图计算。
1)扩展了Spark的RDD API,能用来创建一个定点和边都包含任意属性的有向图
2)支持针对图的各种操作
3)支持一些常用的图算法

6 集群管理器

就底层而言,Spark设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计算。
为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器上运行,包括Hadoop YARN、Apache Mesos,以及Spark 自带的一个简易调度器,叫做独立调度器。
若在装有Hadoop YARN或Mesos的集群,通过Spark对这些集群管理器的支持,我们的应用也同样能运行在这些集群上。在把Spark部署到Amazon EC2上时,Spark有个自带的脚本可以启动独立模式集群以及各种相关服务。
不同集群管理的区别
1)自带的独立模式:在一堆机器上只运行Spark
2)Hadoop YARN或Mesos集群管理器:既可以运行Spark作业有可以运行hadoop作业

四. 弹性分布式数据集(RDD)

RDD——是一个不可变的、容错的、分布式对象集合,可并行操作这些集合并且RDD提供了丰富的数据操作接口。
RDD是对分布式计算的抽象,数据集本身表示要处理的数据,它是一系列数据分片,分布在各个节点的内存或者磁盘中。
弹性之一:自动进行内存和磁盘数据存储的切换
弹性之二:基于lineage的高效容错(若第900个出错,直接从第900个开始恢复就可以)
弹性之三:Task如果失败会自动进行特定次数的重试,默认尝试4次
弹性之四:Stage如果失败会自动进行特定次数的重试(!注意!只计算失败的分片)。默认是尝试3次

五. Spark的存储层次

Spark不仅可以将任何Hadoop分布式文件系统(HDFS)上的文件读取为分布式数据集,也可以支持其他支持Hadoop接口的系统,比如本地文件、亚马逊S3、Cassandra、Hive、HBase等。我们需要弄清楚——hadoop并非Spark的必要条件,Spark支持任何实现了hadoop接口的存储系统。Spark支持的hadoop输入格式包括文本文件、SequenceFile、Avro、Parquet等。
Know more,do more

你可能感兴趣的:(Spark 基础)