Spark引擎原理

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 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模型的,针对存储了大数据的数据仓库,进行分布式交互查询的查询引擎。


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
7月前
|
移动开发 分布式计算 Spark
Spark的几种去重的原理分析
Spark的几种去重的原理分析
144 0
|
7月前
|
机器学习/深度学习 SQL 分布式计算
Spark核心原理与应用场景解析:面试经验与必备知识点解析
本文深入探讨Spark核心原理(RDD、DAG、内存计算、容错机制)和生态系统(Spark SQL、MLlib、Streaming),并分析其在大规模数据处理、机器学习及实时流处理中的应用。通过代码示例展示DataFrame操作,帮助读者准备面试,同时强调结合个人经验、行业趋势和技术发展以展现全面的技术实力。
671 0
|
7月前
|
存储 分布式计算 数据处理
bigdata-35-Spark工作原理
bigdata-35-Spark工作原理
47 0
|
7月前
|
存储 分布式计算 负载均衡
【大数据技术Hadoop+Spark】MapReduce概要、思想、编程模型组件、工作原理详解(超详细)
【大数据技术Hadoop+Spark】MapReduce概要、思想、编程模型组件、工作原理详解(超详细)
241 0
|
7月前
|
存储 分布式计算 Hadoop
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
499 0
|
2月前
|
分布式计算 Java 大数据
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
44 0
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
|
2月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
72 0
|
2月前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
88 0
|
4月前
|
分布式计算 Apache 数据安全/隐私保护
流计算引擎数据问题之在 Spark Structured Streaming 中水印计算和使用如何解决
流计算引擎数据问题之在 Spark Structured Streaming 中水印计算和使用如何解决
59 1
|
5月前
|
分布式计算 Apache Spark

相关实验场景

更多