Spark原理与实践 | 字节青训营

156 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第5天.

课程内容

01.大数据处理引擎Spark介绍

02.SparkCore原理解析

03.SparkSQL原理解析

04.业界挑战与实践

01.大数据处理引擎Spark介绍

1.1 大数据处理技术栈

image.png 1.2 常见的大数据处理链路

image.png 数据可以直接处理,也可以通过数据库管理系统来处理

1.3 开源大数据处理引擎

image.png 批式处理引擎Spark是目前最主流的大数据处理引擎,它是在Hadoop map reduce 引擎(它是大量数据同时处理成为可能)基础上的优化,基于内存的离线计算。

1.4 什么是Spark?

Apache Spark是一个支持多语言的大数据分析处理的统一的引擎。

Spark的主要特点: image (11).png Spark的生态和特点: image.png 1.5 Spark 运行架构和部署方式

运行架构也是典型的master-slaver主从架构: image.png Spark下载编译/Spark的包/Spark的配置/提交简单任务测试开发环境 省略

可在Spark UI查看程序运行情况

image.png

02.SparkCore原理解析

Spark的核心组件

RDD(Resilient Distributed Dataset):表示一个不可变的、可并行操作的分区元素集合。

RDD的特点是分区执行

image.png

如何创建RDD:①内置RDD ②自定义RDD

image.png

image.png 两类RDD算子:

Transform 算子:生成一个新的RDD

所在路径:map/filter/flatMap/groupByKey/reduceByKey/...

image (12).png

Action 算子:触发job提交

所在路径:collect/count/take/saveAsTextFile/...

image (13).png 不同的RDD会相互依赖

image.png

image.png RDD执行流程:

image.png

Scheduler

image.png Memory Management

image.png

image.png

image.png

Shuffle image.png

image.png

image.png

03.SparkSQL原理解析

image.png

SparkSQL 的流程:

image (14).png Catalyst 优化器

image (15).png 用了两个优化规则,RBO和CBO

两个表之间的连接方式:

image.png

Adaptive Query Execution(AQE 自适应查询)

根据已有的查询生成的结点来优化查询

支持的优化场景:

image.png

优化场景一:Partition合并

image.png 优化场景二:SortMergeJoin 转化为 BroadcastHashJoin

image.png 优化场景三:Skew join(优化数据倾斜的连接)

数据倾斜:指分区的数据分布不均匀,会减慢join的查询。

image.png

Runtime Filter

对join算法的优化

image.png Bloom Runtime Filter

image (1).jpeg

Codegen

Codegen:代码生成器

  • 表达式级别的Codegen

image.png

  • wholestage级别的Codegen

image.png

04.业界挑战与实践

image.png

image.png

image.png

image.png

image.png