这是我参与「第四届青训营 」笔记创作活动的的第5天.
课程内容
01.大数据处理引擎Spark介绍
02.SparkCore原理解析
03.SparkSQL原理解析
04.业界挑战与实践
01.大数据处理引擎Spark介绍
1.1 大数据处理技术栈
1.2 常见的大数据处理链路
数据可以直接处理,也可以通过数据库管理系统来处理
1.3 开源大数据处理引擎
批式处理引擎Spark是目前最主流的大数据处理引擎,它是在Hadoop map reduce 引擎(它是大量数据同时处理成为可能)基础上的优化,基于内存的离线计算。
1.4 什么是Spark?
Apache Spark是一个支持多语言的大数据分析处理的统一的引擎。
Spark的主要特点:
Spark的生态和特点:
1.5 Spark 运行架构和部署方式
运行架构也是典型的master-slaver主从架构:
Spark下载编译/Spark的包/Spark的配置/提交简单任务测试开发环境 省略
可在Spark UI查看程序运行情况
02.SparkCore原理解析
Spark的核心组件
RDD(Resilient Distributed Dataset):表示一个不可变的、可并行操作的分区元素集合。
RDD的特点是分区执行
如何创建RDD:①内置RDD ②自定义RDD
两类RDD算子:
Transform 算子:生成一个新的RDD
所在路径:map/filter/flatMap/groupByKey/reduceByKey/...
Action 算子:触发job提交
所在路径:collect/count/take/saveAsTextFile/...
不同的RDD会相互依赖
RDD执行流程:
Scheduler
Memory Management
Shuffle
03.SparkSQL原理解析
SparkSQL 的流程:
Catalyst 优化器
用了两个优化规则,RBO和CBO
两个表之间的连接方式:
Adaptive Query Execution(AQE 自适应查询)
根据已有的查询生成的结点来优化查询
支持的优化场景:
优化场景一:Partition合并
优化场景二:SortMergeJoin 转化为 BroadcastHashJoin
优化场景三:Skew join(优化数据倾斜的连接)
数据倾斜:指分区的数据分布不均匀,会减慢join的查询。
Runtime Filter
对join算法的优化
Bloom Runtime Filter
Codegen
Codegen:代码生成器
- 表达式级别的Codegen
- wholestage级别的Codegen