Spark原理与实践 | 青训营笔记

95 阅读1分钟

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

一:大数据处理引擎Spark介绍

1.1大数据处理技术栈

大数据技术栈.png

1.2大数据处理链路

大数据处理链路.png

1.3开源大数据处理引擎

Batch:Hive,Hadoop,Spark
Streaming:Flink
OLAP:Presto,Impala,DORIS,ClickHouse

1.4Spark生态&特点

  • Spark支持多种语言:SQL,Java/Scala,Python,R
  • Spark支持多种数据源:内置DataSource:Text,Parquet/ORC,JSON/CSV,JDBC 自定义数据源:实现DataSource V1/V2 API,HBase/Mongo等
  • Spark有丰富的API/算子:SparkCore-RDD,SparkSQL-DataFrame Spark生态特点.png

二:SparkCore原理解析

2.1 RDD的概念

RDD五个要素 RDD五要素.png

2.1.1 RDD的创建

内置RDD: ShuffleRDD/HadoopRDD/JDBCRDD/KafkaRDD... 内置RDD.png 自定义RDD:
class CustomRDD(...)extends RDD{}
实现五要素对应函数

2.1.2 俩类算子

Transform算子:生成一个新的RDD

T算子.png Action算子:触发Job提交

A算子.png

2.1.3 RDD依赖

RDD依赖:描述父子RDD依赖之间的依赖关系
窄依赖:父RDD的每个partition之多对应一个子RDD分区
NarrowDependency
OneToOneDependency
RangeDependency
PruneDependency
宽依赖:父RDD的每个partition都可能对应多个子RDD分区
shufflDependency RDD依赖.png

2.1.4 RDD执行流程

RDD执行流程.png

2.2 调度器

调度器.png

三:SparkSql原理解析

3.1Catalyst优化器

RBO RBO.png Batch执行策略:
Once-只执行一次
FixedPoint-重复执行,直到plan不再改变,或执行达到固定次数(默认100次)
CBO

CBO.png

3.2 Runtime Filter

RuntimeFilter.png

3.3 Codegen - Expression

Codegen - Expression.png