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

181 阅读3分钟

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

课程内容及分析理解

一、课程内容

1.大数据处理引擎Spark介绍

2.SparkCore原理解析

3.SparkSQL原理解析

二、分析理解

(一)大数据处理引擎Spark介绍

1.Spark概述

  • Spark于2009年诞生于美国加州大学伯克利分校的AMP实验室,它是一个可应用于大规模数据处理的统一分析引擎。Spark不仅计算速度快,而且内置了丰富的APl,使得用户能够更加容易地编写程序。

2.Spark的生态系统和特点

  • Spark的生态系统主要包含Spark Core、Spark SQL、Spark Streaming、MLlib、GraphX以及独立调度器

  • Spark的特点有速度快、易用性、通用性和兼容性

(二)SparkCore原理解析

1.SparkCore概述

  • SparkCore是Spark的核心组件,它实现了Spark的基本功能,包括任务调度、内存管理、错误恢复、与存储系统交互等模块。SparkCore中还包括了对弹性分布式数据集(Resilient Distributed Datasets,RDD)的API定义,RDD是制度的分区记录的集合,只能基于在稳定物理存储中的数据集和其他已有的RDD上执行确定性操作来创建。

2.RDD

  • RDD( Resilient Distributed Dataset )叫做弹性分布式数据集,是 Spark 中最基本的数据抽象,它代表⼀个 不可变、可分区、⾥⾯的元素可 并⾏计算 的集合。 RDD 具有数据流模型的特点:⾃动容错、位置感知性调度和可伸缩 性。RDD 允许⽤户在执⾏多个查询时显式地将⼯作集缓存在内存中,后续的查询能够重⽤⼯作集,这极⼤地提升了查询速度。

RDD 是 Spark 提供的最重要的抽象概念,它是一种有容错机制的特殊数据集合,可以分布在集群的结点上,以函数式操作集合的方式进行各种并行操作。

它具有以下特点:

  • 只读:不能修改,只能通过转换操作生成新的 RDD。
  • 分布式:可以分布在多台机器上进行并行处理。
  • 弹性:计算过程中内存不够时它会和磁盘进行数据交换。
  • 基于内存:可以全部或部分缓存在内存中,在多次计算间重用

(三)SparkSQL原理解析

1.SparkSQL概述

  • SparkSQL用来操作结构化数据的核心组件,通过SparkSQL可以直接查询Hive、Hbase等多种外部数据源中的数据。SparkSQL的重要特点是能够统一处理关系表和RDD。在处理结构化数据时,开发人员无需编写MapReduce程序,直接使用SQL命令就能完成更加复杂的数据查询操作。

2.SparkSQL原理

  • Spark SQL对SQL语句的处理和关系型数据库采用了类似的方法,sparksql先会将SQL语句进行解析(parse)形成一个Tree,然后使用Rule对Tree进行绑定,优化等处理过程,通过模式匹配对不同类型的节点采用不同操作。而sparksql的查询优化器是catalyst,它负责处理查询语句的解析,绑定,优化和生成物理执行计划等过程,catalyst是sparksql最核心部分。

Spark SQL由core,catalyst,hive和hive-thriftserver4个部分组成。

  • core: 负责处理数据的输入/输出,从不同的数据源获取数据(如RDD,Parquet文件和JSON文件等),然后将结果查询结果输出成Data Frame。

  • catalyst: 负责处理查询语句的整个处理过程,包括解析,绑定,优化,生成物理计划等。

  • hive: 负责对hive数据的处理。

  • hive-thriftserver:提供client和JDBC/ODBC等接口。

      参考文献:
      Spark原理与实践 https://bytedance.feishu.cn/file/boxcnvEmKZp3gR3Q1swBBrrxDJb
      SparkSQL运行原理 https://www.cnblogs.com/db-record/p/11832285.html