Spark 原理_运行过程_概念介绍 | 学习笔记

简介: 快速学习 Spark 原理_运行过程_概念介绍

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段Spark 原理_运行过程_概念介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/689/detail/12025


Spark 原理_运行过程_概念介绍


内容简介

一、逻辑图的原理

二、物理图的原理

三、Job

 

在此之前,我们已经了解了物理执行图和逻辑执行图很多内容,接下来会学习物理执行图如何运行在集群中,怎样去调度、去执行,第一步要去了解运行所涉及的相关概念。

 

一、逻辑图的原理

是什么 怎样生成 具体怎么生成

Val textRDD = sc.parallelize(Seq(Hadoop Spark,hadoop flume,spark sqoop))

Val splitRDD = textRDD.flatMap(_.split(“ “))

Val tupleRDD = splitRDD.map((_,1))

Val reduceRDD = tupleRDD.reduceByKey(_+_)

Val strRDD = reduceRDD.map(item => s${item._}, ${item._2})

scala 运行语言的角度讲,这段代码的执行结果是怎样,哪一个执行对象

1.编辑代码

复制上述代码

输入

Scala>:paste

// Entering paste mode(ctrl.D to finish)

粘贴到此处

StrRDD

ctrl+D 运行

执行结果

image.png

Res2中的 rdd 代表的就是 strrdd

一个代码块的执行结果,就是最后一行代码的执行结果

2.  逻辑图的本质就是计算链条:

StrRDD 通过 map 知道父类是 reduceRDDreduceRDD 通过 reducebykey 知道父类为 TupleRDD,由此继续

这段代码是放在 dirver 中执行的,就拿到了 strrdd ,这个对象中就包含了这个逻辑图,逻辑图的本质就是计算链条


二、物理图的原理

StrRDD.collect.toreach(item => pintln(item

Collect 方法称为 action

Action 算子会触发一次 job 的运行,一个 job 就是一个求值的过程

Collect 方法会去调用一个 runjob 方法,runjob 方法会去调用 DAG scheduler 方法

1.流程:Collect 方法会调用 DAGscheduler DAGscheduler 会调用 tasksheduler,通过 taskscheduler 将任务运行到集群当中

上述代码其实就是最后的一个 RDD 调用了 action 方法,调用 action 方法的时候,会请求一个叫做 DAGscheduler 的组件,DAGscheduler 会创建用于执行 RDD stage task

2.DAGscheduler 主要做三件事

(1)帮助每个 job 计算 DAG 并发给 tasksheduler 调度

(2)确定每个 task 的最佳位置  //一个 stage 中有多个 task,每个 task 针对 rdd 的分区进行划分

(3)跟踪 RDD 的缓存状态,避免重新计算

 

三、Job

1.Job什么时候生成?

当一个 RDD 调用了 action 算子的时候,在 action 算子内部,会使用 sc.runjob()调用 sparkcontext 中的 runjob 方法,这个方法又会调用 DAGscheduler 中的 runjob,后在 DAGscheduler 中使用消息驱动的形式创建 job

简而言之,job RDD 调用 action 算子的时候生成,而且调用一次 action 算子,就会生成一个 job,如果一个 sparkAPPlication 中调用了多次 action 算子,会生成多个 job 串行执行,每个 job 独立运作,被独立调度,所以 RDD 的计算也会被执行多次

2.Job 是什么?

数据从读取到取得结果的过程叫做 jobjob 是独立运行的,如果要将spark 的程序调度到集群中运行,job 是颗粒最大的单位,调度以 job 为最大单位,将 job 拆分为 stage task 去调度分发和运行,一个 job 就是一个 spark 程序从读取-计算-运行的过程。

一个 spark APPlication 可以包含多个 job,这些 job 之间是串行的,也就是第二个 job 需要等待第一个 job 的执行结束后才会开始运行

总结

逻辑图的原理:此时数据还没有计算

物理图的原理:DAGscheduler 帮助生成 stagetask

Stage 中可以有多个 task

因为//stage 中最后一个 RDD 可以有很多分区,每个分区对应一个 task

一个T ask 只能在一个 stage 中,一个t ask 只能计算一个分区

Job 是一个求值的过程。

相关文章
|
1月前
|
分布式计算 大数据 Java
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
24 1
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
|
1月前
|
分布式计算 Java 大数据
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
38 0
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
|
1月前
|
存储 分布式计算 算法
大数据-105 Spark GraphX 基本概述 与 架构基础 概念详解 核心数据结构
大数据-105 Spark GraphX 基本概述 与 架构基础 概念详解 核心数据结构
47 0
|
1月前
|
消息中间件 分布式计算 Kafka
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
39 0
|
1月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
42 0
|
1月前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
78 0
|
4月前
|
SQL 弹性计算 资源调度
云服务器 ECS产品使用问题之bin/spark-sql --master yarn如何进行集群模式运行
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
3月前
|
存储 分布式计算 监控
|
5月前
|
机器学习/深度学习 分布式计算 API
技术好文:Spark机器学习笔记一
技术好文:Spark机器学习笔记一
40 0
|
5月前
|
存储 分布式计算 并行计算
【大数据】计算引擎:Spark核心概念
【大数据】计算引擎:Spark核心概念
113 0