Spark原理和实践|青训营笔记
1.Spark是用于大规模统计分析处理的数据引擎。是一个多语言引擎,可以运用于单机或集群上。
特点:
1.统一引擎,支持多种分布式场景
2.多语言支持
3.可读写丰富的数据源
4.丰富灵活的API/算子
5.支持K8S/YARN/Mesos资源调度
2.Spark构架
spark UI:运行时可以用Spark job来查看;运行可以用Spark History server来查看.
2.SparkCore
RDD是一个容错的可以并行执行的分布式数据集。
五要素:
1.分区列表
2.有计算函数
3.每一个RDD都会依赖于其他RDD
4.实现了两种类型的分区函数
5.每个分区会有一个优先的分布列表
RDD算子:
transform算子:生成一个新的RDD。
Action算子:触发job提交
RDD依赖:
宽依赖(父RDD的每个partition对应多个子RDD);窄依赖(父RDD的每个partition对应一个子RDD
内存管理:
Executor内存主要有两类Storage(存储内存),Execution(执行内存)。
Scheduler:
Memory Management:
统一管理多个并发Task的内存分配
每个Task获取的内存区间为1/(2*N)~1/N,N为当前Executor中正在并发运行的task的数量。
Shuffle:
每一个MAP Task生成一个Shuffle数据文件和一个index文件,dataFile中的数据按照partionld进行排序,同一个partionld的数据聚集在一起,indexFile保存了所有partionld在dataFile中的位置信息,方便后续ReduceTask能Fetch到对应partionld的数据。
3.Sparksql原理解析
Catalyst优化器:对执行计划进行处理和优化,生成可以执行的代码。
4.业界的挑战与实践
Shuffle稳定性解决方案。SQL性能执行问题。参数推荐/作业诊断。