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

108 阅读2分钟

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

1.Spark是用于大规模统计分析处理的数据引擎。是一个多语言引擎,可以运用于单机或集群上。

特点:
 1.统一引擎,支持多种分布式场景
 2.多语言支持
 3.可读写丰富的数据源
 4.丰富灵活的API/算子
 5.支持K8S/YARN/Mesos资源调度
  

2.Spark构架

image.png

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:

image.png 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原理解析

image.png Catalyst优化器:对执行计划进行处理和优化,生成可以执行的代码。

4.业界的挑战与实践

Shuffle稳定性解决方案。SQL性能执行问题。参数推荐/作业诊断。