一 spark是什么
Spark是一种快速、通用、可扩展的大数据分析引擎,其核心优势在于内存计算和高效的数据处理能力。
Spark是在Hadoop基础上的改进,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是,Job中间输出和结果可以保存在内存中而不是HDFS,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。
Spark是MapReduce的优化方案,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足。
二 spark生态圈
Spark当前的生态圈也比较完善了,主要包含
Spark SQL:用来操作结构化数据的组件;
Spark streaming:用来处理实时流数据的组件;
MLlib:提供常见机器学习功能的组件;
Graghx:用于图计算的组件;
spark core:Spark通用基础功能,实现RDD,任务调度,内存管理,容错等功能。
三 spark核心技术
3.1 RDD
3.1.1 RDD是什么?
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据抽象,代表一个不可变、可分区、里面的元素可并行计算的集合。(主语是集合)
- Resilient :它是弹性的,RDD 里面的中的数据可以保存在内存中或者磁盘里面;
- Distributed :它里面的元素是分布式存储的,可以用于分布式计算;
- Dataset: 它是一个集合,可以存放很多元素。
3.1.2 RDD持久化
RDD 通过 persist 或 cache 方法(也是无参调用persist实现的)将计算结果缓存,但是并不是在这两个方法被调用时立即缓存,而是触发后面的 action 时, RDD 才会被缓存在计算节点的内存中,并供后面重用。
重点:RDD持久化的目的是为了提高后续操作的速度;RDD持久化在执行action操作时才进行。
3.2 DAG是什么
DAG(Directed Acyclic Graph 有向无环图)指的是数据转换执行的过程,有方向,无闭环;
RDD 通过一系列的action操作就形成了 DAG ,任务执行时,可以按照 DAG 执行真正的计算。
总结:DAG就是RDD执行操作的流程,也就是一次计算执行过程。
3.3 spark SQL
SparkSQL 是一个既支持 SQL 又支持命令式数据处理的工具;SparkSQL 的主要适用场景是处理结构化数据。
先创建dataframe或dataset,然后就可以通过spark SQL进行在dataframe或dataset执行SQL操作。
3.3.1 DataFrame
DataFrame 是一种以 RDD 为基础的分布式数据集,类似于传统数据库的二维表格,带有 Schema 元信息(可以理解为数据库的列名和类型)。
3.3.2 DataSet
DataSet在dataframe基础上增加了类型信息;
Spark2.0 中两者统一,DataFrame 表示为 DataSet[Row],即 DataSet 的子集。
3.3.3 RDD、DataFrame、DataSet 的区别
3.4 Spark streaming
Spark Streaming 是一个基于 Spark Core 的实时计算框架,可以从很多数据源消费数据并对数据进行实时的处理,然后把数据存储到外部系统(关系数据库、HDFS等)。
工作流程
Spark Streaming 中,会有一个接收器组件 Receiver,作为一个长期运行的 task 跑在一个 Executor 上。Receiver 接收外部的数据流形成 input DStream。
DStream 会被按照时间间隔划分成一批一批的 RDD,当批处理间隔缩短到秒级时,便可以用于处理实时数据流。时间间隔的大小可以由参数指定,一般设在 500 毫秒到几秒之间。
对 DStream 进行操作就是对 RDD 进行操作,计算处理的结果可以传给外部系统。
参考文档:
1.《5w字总结Spark》来源于公众号“五分钟学大数据 ”,作者园陌
2.hadoop与spark的区别
版权归原作者 xiaofj100 所有, 如有侵权,请联系我们删除。