这是我参与「第四届青训营 」笔记创作活动的第五天
大数据技术栈
大数据处理链路
开源大数据处理引擎
spark版本引进
spark生态特点
统一引擎,支持多种分布式场景
多语言支持
可读写丰富数据源
丰富灵活的API算子
支持K8S/YARN/Mesos资源调度
Spark原理解析
SparkCore
RDD
RDD是弹性分布式数据集, 是分布式内存的一个抽象概念,RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,只能通过在其他RDD执行确定的转换操作(如map、join和group by)而创建,然而这些限制使得实现容错的开销很低。对开发者而言,RDD可以看作是Spark的一个对象,它本身运行于内存中,如读文件是一个RDD,对文件计算是一个RDD,结果集也是一个RDD ,不同的分片、 数据之间的依赖 、key-value类型的map数据都可以看做RDD。
RDD五要素
内置RDD
自定义RDD
实现五要素对应的函数
RDD算子
两类RDD算子
Transform算子:生成一个新的RDD
Action算子:触发Job提交
RDD依赖:
窄依赖:
父RDD的每个partition至多对应一个子RDD分区
NarrowDependency
OneToOneDependency
RangeDependency
PruneDependency
宽依赖:
父RDD的每个partition都可能对应多个子RDD分区
ShuffleDependency
RDD执行流程
Scheduler层
Memory Management层
Shuffle层
SortShuffleManager
每个MapTask生成一个Shuffle数据文件和一个index文件,dataFile中的数据按照partitionId进行排序.同一个Partition的数据聚集在一起,indexFile保存了所有ParitionId再dataFile的位置信息,方便后续ReduceTask能Fetch到对应的Partition的数据
Spark原理解析
SparkSQL
Catalyst优化器
RBO
CBO
AQE
Runtime Filter
Bloom RUntime Filter
Codegen-Expression