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

66 阅读2分钟

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

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

1.大数据处理技术栈

image.png

大数据的特性,数据是海量的,数据源是丰富多样的,有消息,图片,音视频流,数据产生的非常快,需要快速处理,提高数据价值。 数据生成后,需要存储元数据信息,选择合适的存储格式,像Parquet、ORC是两种高性能的列式存储,Hudi数据存储的中间件,优化存储的读写,也可以存储到分布式文件存储系统HDFS,分布式消息系统kafka,keyvalue分布式存储的nosql引擎数据库HBase,基于列式存储的分布式数据库Kudu,字节提供的TOS,S3对象存储。 存储的数据需要计算才能使用,大数据的计算框架,Spark批式计算,Flink流式计算,Presto等处理在线分布式查询场景的,是可交互式的OLAP引擎,计算框架借助资源管理的编排调度工具YARN,K8S,来运行在分布式集群中处理存储的数据。 计算处理存储的数据后提供给上层应用,有BI报表,广告,推荐,金融风控等。

4.什么是Spark?

Spark是用于大规模数据处理的统一分析引擎,是一种多语言引擎,可以用于单机节点或集群上来执行数据工程,数据科学和机器学习。

image.png

feature:

  1. 多语言选择,用统一的方式处理流批的数据
  2. 可以用为仪表盘执行快速的sql查询分析,
  3. 适用于大规模的数据科学,对PB级别的数据来执行探索性的数据分析,对数据进行训练建模预测。
  4. 机器学习,在单机上训练机器学习的算法,可以很方便的拓展到大规模集群上

三、SparkSQL原理解析

image.png

image.png

1.SparkSQL执行过程

  • SQL Parse: 将SparkSQL字符串或DataFrame解析为一个抽象语法树/AST,即Unresolved Logical Plan
  • Analysis:遍历整个AST,并对AST上的每个节点进行数据类型的绑定以及函数绑定,然后根据元数据信息Catalog对数据表中的字段进行解析。 利用Catalog信息将Unresolved Logical Plan解析成Analyzed Logical plan
  • Logical Optimization:该模块是Catalyst的核心,主要分为RBO和CBO两种优化策略,其中RBO是基于规则优化,CBO是基于代价优化。 利用一些规则将Analyzed Logical plan解析成Optimized Logic plan
  • Physical Planning: Logical plan是不能被spark执行的,这个过程是把Logic plan转换为多个Physical plans物理执行计划
  • CostModel: 主要根据过去的性能统计数据,选择最佳的物理执行计划(Selected Physical Plan)。
  • Code Generation: sql逻辑生成Java字节。