目录
1.Spark 概念
2. Hadoop和Spark的对比
3. Spark特点
3.1 运行速度快
3.2 简单易用
3.3 通用性强
3.4 可以允许运行在很多地方
4. Spark框架模块
4.1 Spark Core
4.2 SparkSQL
4.3 SparkStreaming
4.4 MLlib
4.5 GraphX
5. Spark的运行模式
5.1 本地模式(单机) Local运行模式
5.2 Standalone模式(集群)
5.3 HadoopYARN模式(集群)
5.4 Kubernetes模式(容器集群)
5.5 云服务模式(运行在云平台上)
6. Spark架构
6.1 在Spark中任务运行层面
6.2 在Spark中资源层面
1.Spark 概念
- 定义:Apache Spark 是用于大规模数据处理的统一分析引擎
- 其特点就是对任意类型的数据进行自定义计算。
- Spark可以计算:结构化、半结构化、非结构化等各种类型的数据结构,同时也支持使用Python、Java、Scala、R以及SQL语言去开发应用程序计算数据。
- Spark的适用面非常广泛,所以,被称之为统一的(适用面广)的分析引擎(数据处理)
- Spark最早源于一篇论文 Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing, 该论文是由加州大学柏克莱分校的Matei Zaharia等人发表的。论文中提出了一种弹性分布式数据集(即RDD)的概念。
- RDD是一种分布式内存抽象,其使得程序员能够在大规模集群中做内存运算,并且有一定的容错方式。而这也是整个Spark的核心数据结构,Spark整个平台都围绕着RDD进行。
2. Hadoop和Spark的对比
尽管Spark相对于Hadoop而言具有较大优势,但Spark并不能完全替代Hadoop
- 在计算层面,Spark相比较MR(MapReduce)有巨大的性能优势,但至今仍有许多计算工具基于MR构架,比如非常成熟的Hive
- Spark仅做计算,而Hadoop:生态圈不仅有计算(MR)也有存储(HDFS)和资源管理调度(YARN),HDFS和YARN仍是许多大数据体系的核心架构。
3. Spark特点
3.1 运行速度快
Spark处理数据与MapReduce处理数据相比,有如下两个不同点:
- Spark处理数据时,可以将中间处理结果数据存储到内存中;
- Spark提供了非常丰富的算子(APi),可以做到复杂任务在一个Spark程序中完成.
3.2 简单易用
3.3 通用性强
3.4 可以允许运行在很多地方
4. Spark框架模块
4.1 Spark Core
Spark的核心,Spark核心功能均由SparkCore模块提供,是Spark:运行的基础。
SparkCorel以RDD为数据抽象,提供Python、Java、Scala、R语言的API,可以编程进行海量离线数据批处理计算。
4.2 SparkSQL
基于SparkCore之上,提供结构化数据的处理模块。
SparkSQL支持以sQL语言对数据进行处理,SparkSQL本身针对离线计算场景。
同时基于SparkSQL,Spark提供了StructuredStreaming模块,可以以SparkSQL为基础,进行数据的流式计算。
4.3 SparkStreaming
以SparkCore为基础,提供数据的流式计算功能。
4.4 MLlib
以SparkCore为基础,进行机器学习计算,内置了大量的机器学习库和APi算法等。方便用户以分布式计算的模式进行机器学习计算。
4.5 GraphX
以SparkCore为基础,进行图计算,提供了大量的图计算APl,方便用于以分布式计算模式进行图计算。
5. Spark的运行模式
5.1 本地模式(单机) Local运行模式
本地模式就是以一个独立的进程,通过其内部的多个线程来模拟整个Spark运行时的环境
5.2 Standalone模式(集群)
Spark中的各个角色以独立进程的形式存在,并组成Spark:集群环境
5.3 HadoopYARN模式(集群)
Spark中的各个角色运行在YARN的容器内部,并组成Spark集群环境
5.4 Kubernetes模式(容器集群)
Spark中的各个角色运行在Kubernetesl的容器内部,并组成Spark:集群环境
5.5 云服务模式(运行在云平台上)
6. Spark架构
左边是YARN框架,右边是Spark框架
6.1 在Spark中任务运行层面
- Driver, 负责对一个任务的运行进行管理(单个任务的管理)
- Executor,单个任务的计算(干活的)
- 正常情况下Executor是干活的角色,不过特殊场景下,(local模式)Driver可以即管又干活
6.2 在Spark中资源层面:
- Master角色:集群资源管理
- Worker的角色: 单机资源管理