Spark引擎原理

简介: Spark引擎原理

💨Spark介绍

💨大数据处理引擎

🚩批试计算:Map Reduce 、 Spark 、HIVE

🚩流式计算:Flink

🚩OLAP系统:presto、ClickHouse、Impala、DORIS

💨Spark概念

是一种"One Stack to rule them all"的大数据计算框架,期望使用一个技术堆栈就完美地解决大数据领域的各种计算任务。Apache官方,对Spark的定义就是:通用的大数据快速处理引擎。

🎈spark能干什么

Spark使用Spark RDD、Spark SQL、 Spark Streaming,MLlib,GraphX成功解决了大数据领城中,离线批处理、交互式查询、实时流计算、机器学习与图计算等最重要的任务和问题。

🎈spark包含的常见计算框架

🚩Spark,是一种通用的大数据计算框架,I正如传统大数据技术Hadoop的MapReduce、Hive引擎,以及Storm流式实时计算引擎等🚩Spark包含了大数据领城常见的各种计算框架:比如 Spark Core用于离线计算, Spark SQL用于交互式查询, Spark Streaming用于实时流式计算,Spark MILlib用于机器学习, Spark GraphX用于图计算。

💨Spark的特点

🚩统一引擎,支持多种分布式场景🚩多语言支持🚩可读写丰富数据源🚩丰富灵活的API/算子🚩支持K8S/YARN/Mesos资源调度

spark将每个任务构建成DAG进行计算,内部的计算过程通过弹性式分布式数据集RDD在内存在进行计算,相比于hadoop的mapreduce效率提升了100倍。

spark 提供了大量的算子,开发只需调用相关api进行实现无法关注底层的实现原理。

spark 生态圈丰富,迭代更新快,成为大数据领域必备的计算引擎。

自我思考

spark 计算速度快,易于使用,支持多种的资源管理模式,社区支持。迭代更新快,成为大数据领域必备的计算引擎。

💨SparkCore

🍳SparkCore结构如下

🎈基础配置🚩SparkConf配置信息🚩Spark Context (spark上下文)🚩Spark RPC (过程调用)🚩ListenerBus (事件总线)🚩MetricsSystem (度量系统)🚩SparkEnv (环境变量)🎈 存储系统🚩内存🚩磁盘🎈计算层🚩内存管理🚩任务管理🚩Task管理🚩Shuffle管理🎈调度原理🚩DAG调度🚩Task调度

💨RDD

是弹性分布式数据集,是一种容错的、可以被并行操作的元素集合,是Spark对所有数据处理的一种基本抽象。可以通过一系列的算子对rdd进行操作,主要分为Transformation和Action两种操作。

Transformation(转换):是对已有的RDD进行换行生成新的RDD,对于转换过程采用惰性计算机制,不会立即计算出结果。常用的方法有map,filter,flatmap等。Action(执行):对已有对RDD对数据执行计算产生结果,并将结果返回Driver或者写入到外部存储中。常用到方法有reduce,collect,saveAsTextFile等。

🎈如何创建RDD?

✔内置RDD

ShuffleRDD/HadoopRDDJDBCRDD/KafkaRDD/ UnionRDD/MapPartitionsRDD/...

✔自定义RDD

class CustomRDD(...) extends RDD {}实现五要素对应的函数

🎈RDD算子

✔Transform算子:生成一个新的RDD✔Action算子:触发Job提交

🎈RDD依赖

描述父子RDD之间的依赖关系

🚩 窄依赖:父RDD的每个parition至多对应一个子RDD分区。🚩 宽依赖:父RDD的每个partition都可能对应多个子RDD分区。

🎈RDD迭代过程

🚩sparkContext创建RDD对象,计算RDD间的依赖关系,并组成一个DAG有向无环图。🚩DAGScheduler将DAG划分为多个stage,并将stage对应的TaskSet提交到集群的管理中心,stage的划分依据是RDD中的宽窄依赖,spark遇见宽依赖就会划分为一个stage,每个stage中包含来一个或多个task任务,避免多个stage之间消息传递产生的系统开销。 🚩taskScheduler 通过集群管理中心为每一个task申请资源并将task提交到worker的节点上进行执行。🚩worker上的executor执行具体的任务。

💨SparkSQL

🎈概述

前身:shark

🚩shark: 执行计划优化完全依赖于Hive,不方便添加新的优化策略; Spark是线程级并行,而MapReduce是进程级并行。 Spark在兼容Hive的实现上存在线程安全问题,导致Shark 不得不使用另外一套独立维护的打了补丁的Hive源码分支; 🚩Spark SQL: 作为Spark生态的一员继续发展,而不再受限于Hive, 只是兼容Hive;Hive on Spark作为Hive的底层引擎之一 Hive可以采用Map-Reduce、Tez、Spark等引擎

spark sql提供了基于sql的数据处理方法,使得分布式的数据集处理变的更加简单,这也是spark 广泛使用的重要原因。

🎈特点

🚩数据兼容:不仅兼容Hive,还可以从RDD、parquet文件、 Json文件获取数据、 支持从RDBMS获取数据🚩性能优化:采用内存列式存储、自定义列化器等方式提升性能;🚩组件扩展: SQL的语法解析器、分析器、优化器都可以重新定义和扩展🚩兼容: Hive兼容层面仅依赖HiveQL解析、Hive元数据。 从HQL被解析成抽象语法树(AST) 起,就全部由Spark SQL接管了,Spark SQL执行计划生成和优化都 由Catalyst (函数式关系查询优化框架)负责🚩支持:数据既可以来自RDD,也可以是Hive、HDFS、 Cassandra等外部数据源, 还可以是JSON格式的数 据;

🎈Catalyst优化器

spark sql大致框架如下

图片.png

🚩API 层简单的说就是 Spark 会通过一些 API 接受 SQL 语句
🚩 收到 SQL 语句以后, 将其交给 Catalyst, Catalyst 负责解析 SQL, 生成执行计划等
🚩 Catalyst 的输出应该是 RDD 的执行计划
🚩 最终交由集群运行

🎈自适应查询执行框架(AQE)

AQE 可以理解成是Spark Catalyst 之上的一层,它可以在运行时修改 Spark plan。AQE 完全基于精确的运行时统计信息进行优化,引入了 Query Stages 的概念 ,并且以 Query Stage 为粒度,进行运行时的优化


Spark SQL实际上并不能完全替代Hive,因为Hive是一种基于HDFS的数据仓库,并且提供了基于SQL模型的,针对存储了大数据的数据仓库,进行分布式交互查询的查询引擎。


相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
8月前
|
SQL 分布式计算 数据库连接
大数据Spark分布式SQL引擎
大数据Spark分布式SQL引擎
220 0
|
5月前
|
存储 分布式计算 负载均衡
【大数据技术Hadoop+Spark】MapReduce概要、思想、编程模型组件、工作原理详解(超详细)
【大数据技术Hadoop+Spark】MapReduce概要、思想、编程模型组件、工作原理详解(超详细)
64 0
|
5月前
|
存储 分布式计算 Hadoop
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
140 0
|
5天前
|
机器学习/深度学习 分布式计算 数据处理
Spark是一个基于内存的通用数据处理引擎,可以进行大规模数据处理和分析
【5月更文挑战第2天】Spark是一个基于内存的通用数据处理引擎,可以进行大规模数据处理和分析
18 3
|
7天前
|
分布式计算 DataWorks 大数据
MaxCompute操作报错合集之大数据计算的MaxCompute Spark引擎无法读取到表,是什么原因
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
MaxCompute操作报错合集之大数据计算的MaxCompute Spark引擎无法读取到表,是什么原因
|
6月前
|
分布式计算 Java Spark
图解Spark Graphx实现顶点关联邻接顶点的collectNeighbors函数原理
图解Spark Graphx实现顶点关联邻接顶点的collectNeighbors函数原理
35 0
|
5月前
|
SQL 分布式计算 Apache
流数据湖平台Apache Paimon(五)集成 Spark 引擎
流数据湖平台Apache Paimon(五)集成 Spark 引擎
79 0
|
5月前
|
SQL 分布式计算 Java
Note_Spark_Day08:Spark SQL(Dataset是什么、外部数据源、UDF定义和分布式SQL引擎)
Note_Spark_Day08:Spark SQL(Dataset是什么、外部数据源、UDF定义和分布式SQL引擎)
47 0
|
5月前
|
存储 分布式计算 大数据
【大数据技术Hadoop+Spark】Spark RDD设计、运行原理、运行流程、容错机制讲解(图文解释)
【大数据技术Hadoop+Spark】Spark RDD设计、运行原理、运行流程、容错机制讲解(图文解释)
77 0
|
5月前
|
分布式计算 资源调度 大数据
【大数据技术Hadoop+Spark】Spark架构、原理、优势、生态系统等讲解(图文解释)
【大数据技术Hadoop+Spark】Spark架构、原理、优势、生态系统等讲解(图文解释)
287 0