这是我参与「第四届青训营 」笔记创作活动的第4天。
课程内容及分析理解
一、课程内容
1.大数据处理引擎Spark介绍
2.SparkCore原理解析
3.SparkSQL原理解析
二、分析理解
(一)大数据处理引擎Spark介绍
1.Spark概述
- Spark于2009年诞生于美国加州大学伯克利分校的AMP实验室,它是一个可应用于大规模数据处理的统一分析引擎。Spark不仅计算速度快,而且内置了丰富的APl,使得用户能够更加容易地编写程序。
2.Spark的生态系统和特点
-
Spark的生态系统主要包含Spark Core、Spark SQL、Spark Streaming、MLlib、GraphX以及独立调度器。
-
Spark的特点有速度快、易用性、通用性和兼容性。
(二)SparkCore原理解析
1.SparkCore概述
- SparkCore是Spark的核心组件,它实现了Spark的基本功能,包括任务调度、内存管理、错误恢复、与存储系统交互等模块。SparkCore中还包括了对弹性分布式数据集(Resilient Distributed Datasets,RDD)的API定义,RDD是制度的分区记录的集合,只能基于在稳定物理存储中的数据集和其他已有的RDD上执行确定性操作来创建。
2.RDD
- RDD( Resilient Distributed Dataset )叫做弹性分布式数据集,是 Spark 中最基本的数据抽象,它代表⼀个 不可变、可分区、⾥⾯的元素可 并⾏计算 的集合。 RDD 具有数据流模型的特点:⾃动容错、位置感知性调度和可伸缩 性。RDD 允许⽤户在执⾏多个查询时显式地将⼯作集缓存在内存中,后续的查询能够重⽤⼯作集,这极⼤地提升了查询速度。
RDD 是 Spark 提供的最重要的抽象概念,它是一种有容错机制的特殊数据集合,可以分布在集群的结点上,以函数式操作集合的方式进行各种并行操作。
它具有以下特点:
- 只读:不能修改,只能通过转换操作生成新的 RDD。
- 分布式:可以分布在多台机器上进行并行处理。
- 弹性:计算过程中内存不够时它会和磁盘进行数据交换。
- 基于内存:可以全部或部分缓存在内存中,在多次计算间重用
(三)SparkSQL原理解析
1.SparkSQL概述
- SparkSQL用来操作结构化数据的核心组件,通过SparkSQL可以直接查询Hive、Hbase等多种外部数据源中的数据。SparkSQL的重要特点是能够统一处理关系表和RDD。在处理结构化数据时,开发人员无需编写MapReduce程序,直接使用SQL命令就能完成更加复杂的数据查询操作。
2.SparkSQL原理
- Spark SQL对SQL语句的处理和关系型数据库采用了类似的方法,sparksql先会将SQL语句进行解析(parse)形成一个Tree,然后使用Rule对Tree进行绑定,优化等处理过程,通过模式匹配对不同类型的节点采用不同操作。而sparksql的查询优化器是catalyst,它负责处理查询语句的解析,绑定,优化和生成物理执行计划等过程,catalyst是sparksql最核心部分。
Spark SQL由core,catalyst,hive和hive-thriftserver4个部分组成。
-
core: 负责处理数据的输入/输出,从不同的数据源获取数据(如RDD,Parquet文件和JSON文件等),然后将结果查询结果输出成Data Frame。
-
catalyst: 负责处理查询语句的整个处理过程,包括解析,绑定,优化,生成物理计划等。
-
hive: 负责对hive数据的处理。
-
hive-thriftserver:提供client和JDBC/ODBC等接口。
参考文献: Spark原理与实践 https://bytedance.feishu.cn/file/boxcnvEmKZp3gR3Q1swBBrrxDJb SparkSQL运行原理 https://www.cnblogs.com/db-record/p/11832285.html