目录
(3)Spark的官方网址: Apache Spark™ - Unified Engine for large-scale data analytics
1、什么是Spark?
Apache Spark is a multi-language engine for executing data engineering,data so simple,fast,scalable,unified.
Spark是一种快速、通用、可扩展的大数据分析引擎。
(1)Spark的发展历程:
2009年诞生于加州大学伯克利分校的AMPLab(AMP实验室);2010年正式开源;2013年6月成为Apache孵化项目;2014年2月成为Apache顶级项目。目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLlib等子项目。
(2)Spark的特点:
-
快速。Spark的中间数据存放于内存中,有更高的迭代运算效率。
-
易用。Spark提供超过80个高阶算子,使得编写并行应用程序变得更加容易。
- 通用。Spark全栈统一的解决方案可极大减少平台部署、开发和维护的人力和物力成本。
- 随处运行。Spark作为一个分布式计算框架,本身没有储存功能,但是可以从众多数据源(例如HDFS、Cassandra、HBase、Hive、Alluxio)中读取数据。
- 简洁。Spark支持使用Scala、Python等语言编程代码,相对Java而言更加简洁。Java十几行甚至几十行的代码,而Spark只需要短短一行。
(总之就是Spark牛B)
(3)Spark的官方网址:Apache Spark™ - Unified Engine for large-scale data analytics
2、Spark与MapReduce的区别
(1)Spark与MR运行架构上的区别:
MR是基于磁盘进行运算的,而Spark基于内存进行运算。
(2)Spark与MR原理上的区别:
Spark核心原理
首先,用户提交应用程序后,执行具体的mian()方法,随后启动Driver进程,令Driver向集群管理器请求启动Executor所需的资源,而集群管理器即为Driver启动执行器,基于RDDs上的操作和转换,Driver将工作以任务的形式发送给Excutor,最后由Exexutor处理任务,将结果通过集群管理器发送回驱动器。
图例:
MR核心原理
首先由Map进行映射,将数据过滤区分,再将原始数据转化为键值对;然后由Reduce进行合并,将具有相同key值的value进行处理后再输出新的键值对作为最终结果。为了让Reduce可以并行处理Map的结果,必须对Map的输出进行一定的排序与分割,然后再交给对应的Reduce,也就是所谓的Shuffle。
图例:
3、结构化数据与非结构化数据
(1)结构化数据:
指可以使用关系型数据库表示和存储,表现为二维(表格)形式的数据。一般以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。
(2)非结构化数据:
非结构化数据是指信息没有一个预先定义好的数据模型或者没有以一个预先定义的方式来组织。一般指文本、图片、音频/视频信息等等。
(3)二者之间有何差异?
数据组织形式:结构化数据具有明确的数据类型和关系,通常以表格或关系型数据库的形式存储;而非结构化数据没有明确的结构和格式,多样性、复杂性和不规则性较高,以多样的形式存在。
数据处理方式:结构化数据可以通过传统的查询语言进行处理和分析,可以进行数据的筛选、排序、聚合等操作;非结构化数据的处理则需要使用特定的技术和工具,以提取有用的信息和洞察。
数据分析能力:结构化数据由于有明确的结构和格式,可以轻松高效地进行数据分析和建模;而非结构化数据的分析相对更加繁琐,需要使用更复杂的技术和算法。
数据应用领域:结构化数据常用于企业的业务数据管理、表格生成等方面;非结构化数据则常用于社交媒体分析、舆论监测、情感分析、智能识别等领域。
4、Spark的三种部署模式
(1)Standalone模式
Standalone模式也就是独立模式,无需依赖其他资源管理系统,可以单独部署到一个集群当中。也被当作是yarn集群模式和yarn客户端模式的基础。
Standalone模式流程图
(2)yarn集群模式
yarn集群模式基于Standalone模式的独立之伤上更加简便。启动yarn集群模式的客户端之后可以立即关闭,不必持续到执行周期结束;但是相对的,其交互性也会大大降低,远不及接下来的yarn客户端模式。
yarn-cluster流程图
(3)yarn客户端模式
yarn客户端模式一改yarn集群模式的缺点,加强了交互性和调度功能。它可以在关闭客户端之后继续运行,并且可以快速地看到应用程序的输出信息。
yarn-client流程图
5、Spark核心数据集RDD
(1)RDD的原理
RDD(Resilient Distributed Datasets弹性分布式数据集),可以简单的把RDD理解成一个提供了许多操作接口的数据集合,和一般数据集不同的是,其实际数据分布存储于一批机器中(内存或磁盘中)。
示意图:
(2)转换算子和行动算子
类型图:
(3)RDD转换和操作示例
窄依赖(Narrow Dependency):表现为一个父RDD 的分区对应于一个子 RDD 的分区或者多个父 RDD 的分区对应于一个子 RDD 的分区。
宽依赖(Shuffle Dependency):表现为存在一个父RDD 的一个分区对应一个子 RDD 的多个分区。
Stage(阶段):阶段的划分由宽窄依赖决定,自后向前,遇到宽依赖则划分一个Stage,而每个Stage中又包含一个或多个Task(任务)。
Task(任务):Task是在集群上运行的基本单位。一个Task负责处理RDD的一个partition。RDD的多个patition会分别由不同的Task去处理。这些Task的处理逻辑完全是一致的。这一组Task就组成了一个Stage。
(一个Stage内只会存在同一种Task)