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

202 阅读2分钟

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

大数据处理引擎Spark介绍

  • Spark是一个多语言引擎,用于在单节点机器或集群上执行数据工程、数据科学和机器学习。

大数据处理技术栈

自底向上:

  • 大数据特性 海量的、多样化、快速
  • 存储技术栈:MetaStore Parquet、ORC、DeltaLake、Hudi、lceberg、HDFS、Kafka、HBase、Kudu、TOS、S3
  • 计算技术栈: Spark/Flink/Presto/lmpala/ClickHouse/YARN/K8S
  • 应用 BI报表、实时大盘、广告、推荐

SparkCore

Spark core中的RDD介绍

RDD(Resilient Distributed Dataset):即弹性分布式数据集,是一个容错的、并行的数据结构

  • RDD执行流程 image.png Stage划分方法: Stage的划分是在DAGScheduler中完成的,划分传入的是一个DAG,首先他根据DAG的最后一个RDD,得到DAG中宽依赖的list,具体步骤是遍历RDD的parents,判断parent的dependency类型,如果是窄依赖,则递归访问这个parent,反之则将这个宽依赖加到结果集中。然后遍历这个宽依赖的list,对DAG中所有宽依赖创建Stage,这时创建的叫做ShuffleMapStage,最后还要创建一个ResultStage,最终完成stage划分

SparkSql原理

sql执行链路如下: 主要学习calalyst优化器以及SparkSQL三大重点特性

image.png

  • Unresolved Logical Plan:未解析的逻辑计划,仅仅是数据结构,不包含任何数据信息。
  • Logical Plan:解析后的逻辑计划,节点中绑定了各种优化信息。
  • Optimized Logical Plan:优化后的逻辑计划
  • Physical Plans:物理计划列表
  • Selected Physical Plan 从列表中按照一定的策略选取最优的物理计划

Catalyst优化

  1. Rule Based Optimizer(RBO): 即基于规则优化,对语法树进行一次遍历,模式匹配能够满足特定规则的节点,再进行相应的等价转换。
  2. Cost Based Optimizer(CBO): 即基于代价优化,根据优化规则对关系表达式进行转换,生成多个执行计划,然后CBO会通过根据统计信息(Statistics)和代价模型(Cost Model)计算各种可能执行计划的代价,从中选用COST最低的执行方案,作为实际运行方案。CBO依赖数据库对象的统计信息,统计信息的准确与否会影响CBO做出最优的选择。

runtime filter

Runtime Filter是一种在数据库优化技术,基本原理是通过在join的probe端提前过滤掉那些不会命中join的输入数据来大幅减少join中的数据传输和计算,从而减少整体的执行时间。