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

96 阅读3分钟

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

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

1. Spark数据处理引擎介绍

大数据处理技术栈 image.png 常见大数据处理技术链路 image.png 常见开源大数据处理引擎 image.png

本次主要介绍Spark数据处理引擎

Spark生态特点 image.png Spark生态组件:

  • Spark Core:Spark核心组件

    实现Spark的基本功能:即任务调度、内存管理、错误恢复、存储系统交互等。

  • Spark SQL:操作结构化数据的核心组件
  • Spark Structured Streaming:Spark提供的流式计算框架,支持高吞吐量、可容错处理的实时流式数据处理。
  • MLlib:Spark提供的关于机器学习功能的算法程序库,包括分类、回归、聚类、协同过滤等算法
  • GraphX:Spark提供的分布式图处理框架,有对图计算,图挖掘算法的API接口以及更丰富的功能。

Spark包概览 image.png Spark提交命令

image.png Spark UI image.png Spark 性能benchmark image.png

Spark运行架构和工作原理

  • Application 应用:Spark上运行的应用。
  • Driver Program 驱动器:运行main()方法并创建SparkContext的进程。
  • Cluster Manager 集群管理器 :用于在集群上申请资源的外部服务
  • Worker Node 工作节点:集群上运行应用程序代码的任意一个节点。
  • Executor 执行器 :在集群工作节点上为某个应用启动的工作进程,负责运行计算任务,并为应用程序存储数据。
  • Task 任务:执行器的工作单元。
  • Job 作业:一个并行计算作业,由一组任务(Task)组成,并由Spark的行动(Action)算子(如:save、collect)触发启动。
  • Stage 阶段:每个Job可以划分为更小的Task集合,每组任务被称为Stage。image.png Spark应用在集群上运行时,包括了多个独立的进程,这些进程之间通过驱动程序(Driver Program)中的SparkContext对象进行协调,SparkContext对象能够与多种集群资源管理器(Cluster Manager)通信,一旦与集群资源管理器连接,Spark会为该应用在各个集群节点上申请执行器(Executor),用于执行计算任务和存储数据。Spark将应用程序代码发送给所申请到的执行器,SparkContext对象将分割出的任务(Task)发送给各个执行器去运行

2. SparkCore

SparkCore

image.png 什么是RDD: image.png 创建RDD image.png RDD算子

image.png RDD依赖 image.png

image.png

RDD执行过程

image.png

Scheduler image.png

内存管理

image.png

image.png

Spark 作为一个基于内存的分布式计算引擎,Spark采用统一内存管理机制。重点在于动态占用机制。

  • 设定基本的存储内存(Storage)和执行内存(Execution)区域
  • UnifiedMemoryManager统一管理Storage/Execution内存
  • 双方空间都不足时,存储到硬盘;对方空余时,可借用对方空间
  • 当Storage空闲,Execution可以借用Storage的内存使用,可以减少spill等操作, Execution内存不能被Storage驱逐。Execution内存的空间被Storage内存占用后,可让对方将占用的部分转存到硬盘,然后"归还"借用的空间。

  • 同理当Execution空闲,Storage可以借用Execution内存使用

  • user memory存储用户自定义的数据结构或者spark内部元数据

  • Reserverd memory:预留内存,防止OOM,

3. SparkSQL

image.png DataFrame: 一种以RDD为基础的分布式数据集

Catalyst:SparkSQL核心模块,对执行计划进行处理优化

Adaptive Query Execution:自适应查询执行

Runtime Filter:运行时过滤

Codegen:生成程序代码的技术或系统

4. 业界问题与挑战

shuffle稳定性问题

image.png

解决方案

image.png

SQL执行性能问题

image.png 问题解决方向

image.png

参数推荐&作业诊断 image.png