当前位置: 首页 > news >正文

大数据 - Spark系列《四》- Spark分布式运行原理

Spark系列文章:

大数据 - Spark系列《一》- 从Hadoop到Spark:大数据计算引擎的演进-CSDN博客

大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置-CSDN博客

大数据 - Spark系列《三》- 加载各种数据源创建RDD-CSDN博客 

目录

🍠Spark分布式运行原理

1)🧀编程抽象类 RDD

2)🧀分区数据处理

3)🧀统一的数据处理逻辑

4) 🧀统一的结果类型

🍠延申:关于Spark默认并行度spark.default.parallelism的理解

1. 🧀设置方式: 可以通过Spark配置项进行设置

2. 🧀影响因素

🍠Spark面试题总结:

1. Spark是什么,用于什么场景?

2. Spark的优点

3. Spark为什么比MR效率高?

4. Spark编程核心步骤

5. Spark运行模式有哪些?(.setMaster方法)

6. RDD是什么?

7. 创建RDD的方式有哪些?


🍠Spark分布式运行原理

Spark作为一种分布式计算引擎,能够高效地处理大规模数据,其分布式运行的原理主要基于以下几个方面:

1)🧀编程抽象类 RDD

Spark中的核心概念之一是弹性分布式数据集(RDD),它是一种抽象的数据结构,代表分布在集群中的数据集。RDD具备分区的特性,每个分区可以看作是并行处理的单元,Spark会以分区为单位创建任务实例,从而实现分布式运行计算。目前可以理解RDD为带有分区信息和算子计算逻辑的迭代器

创建一个RDD 到底有几个分区(并行)?

1. 加载文件源头RDD

当通过加载文件等方式创建RDD时,RDD的初始分区数由Spark根据输入数据的大小和集群配置自动确定。通常情况下,如果没有特别指定,Spark会尽可能地将数据分成多个分区,以提高并行度和性能。对于文件加载的源头RDD,默认情况下至少会有2个分区。

2. 调用算子返回的RDD

当对一个RDD调用转换算子(transformation)时,返回的新RDD的分区数通常与父RDD的分区数保持一致。

2)🧀分区数据处理

在Spark分布式运行中,各个分区处理属于自己的数据任务。每个任务会被分配到不同的节点上执行,并且各个分区的计算逻辑是一致的,这样就可以保证在不同节点上的并行计算结果是一致的。

3)🧀统一的数据处理逻辑

在处理数据的过程中,Spark提供了丰富的方法和算子来对RDD进行各种操作,例如map、flatMap、reduce等。这些操作符能够灵活地应用于各个分区的数据上,并且具有统一的数据处理逻辑,从而保证了整个作业的一致性。

4) 🧀统一的结果类型

最终,在分布式运行完成后,各个分区处理的结果会被合并成一个统一的RDD。这样就保证了返回的结果类型是一致的,可以进一步进行后续的操作和分析。

 

🍠延申:关于Spark默认并行度spark.default.parallelism的理解

spark.default.parallelism是指RDD任务的默认并行度,即RDD中的分区数。它对Spark作业的并行执行有着重要影响。

1. 🧀设置方式: 可以通过Spark配置项进行设置

val conf = new SparkConf().set("spark.default.parallelism", "500")

2. 🧀影响因素

  • 父RDD分区数: 当初始RDD没有设置分区数(numPartitionnumSlice)时,默认并行度取决于spark.default.parallelism的值。

  • 分布式shuffle操作: 在使用reduceByKeyjoin等分布式shuffle算子操作时,reduce端的stage默认取spark.default.parallelism配置项的值作为分区数。

  • 没有shuffle的算子: 对于没有shuffle的算子,在创建RDD又没有设置分区数时,默认并行度依赖Spark运行的模式:

    • 本地模式: 默认并行度取决于本地机器的核数。

        --local: 没有指定CPU核数,则所有计算都运行在一个线程当中,没有任何并行计算

        --local[K]:指定使用K个Core来运行计算,比如local[2]就是运行2个Core来执行

        --local[*]: 自动帮你按照CPU的核数来设置线程数。比如CPU有32个逻辑处理器,Spark帮你自动设置32个线程计算。

    • 集群模式: 默认并行度为8。


目前Spark系列文章已经更新到第四篇,Spark第一阶段学习也已经完成。对此,特对知识点做了一个汇总如下

🍠Spark面试题总结:

1. Spark是什么,用于什么场景?

Spark是一站式分布式计算引擎,主要用于离线处理

2. Spark的优点

1)比MR效率高

2)API丰富,可以实现复杂度处理逻辑

3)功能组件丰富,满足各种处理需求场景

4)支持多语言编程

3. Spark为什么比MR效率高?

1)减少了与HDFS的交互的次数

2)减少了作业初始化的流程

3)开发高效

4. Spark编程核心步骤

1)编程环境

2)加载各种数据源

3)使用算子处理数据

4)保存结果

5. Spark运行模式有哪些?(.setMaster方法)

1)本地测试

2)yarn集群

3)自带的集群模式

6. RDD是什么?

RDD是弹性分布式数据集,它是一种抽象的数据结构,可以理解为带有分区信息和算子计算逻辑的迭代器。

7. 创建RDD的方式有哪些?

1)读文件

2)本地集合用makerdd方法转换成rdd

3) 读数据库

 

相关文章:

大数据 - Spark系列《四》- Spark分布式运行原理

Spark系列文章: 大数据 - Spark系列《一》- 从Hadoop到Spark:大数据计算引擎的演进-CSDN博客 大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置-CSDN博客 大数据 - Spark系列《三》- 加载各种数据源创建RDD-CSDN博客 目录 🍠…...

Java使用规范

1.关键字 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词) 特点:关键字中的所有字母都是小写 2.保留字 java保留字:现有Java版本尚未使用,但以后的版本可能会作为关键字使用。命名标识符时要避免使用这些…...

Debian 11 安装并开启SSH服务实现允许root用户使用SecureCRT远程登录

Debian11系统默认没有安装SSH服务,如需要开启远程登录则需要安装相应的服务。 确保你已经登录到Debian系统,并具有root用户或sudo特权。 打开终端,并使用以下命令安装OpenSSH服务器软件包: sudo apt update sudo apt install ope…...

Linux下对线程的理解(上)

1、线程的概念 要理解线程首先要理解页表和进程地址空间,我是这样子理解的,1、进程地址空间是进程访问资源的窗口。2、页表是规定进程地址空间中哪些属于进程。3、合理的使用进程地址空间页表可以对资源进行划分。而如何理解进程呢?进程是接受…...

【蓝桥杯】环形链表的约瑟夫问题

目录 题目描述: 输入描述: 输出描述: 示例1 解法一(C): 解法二(Cpp): 正文开始: 题目描述: 据说著名犹太历史学家 Josephus 有过以下故事&a…...

深度学习本科课程 实验1 Pytorch基本操作

一、Pytorch基本操作考察 1.1 任务内容 使用 𝐓𝐞𝐧𝐬𝐨𝐫 初始化一个 𝟏𝟑 的矩阵 𝑴 和一个 𝟐𝟏 的矩阵 𝑵,对两矩阵…...

大数据分析|设计大数据分析的三个阶段

文献来源:Saggi M K, Jain S. A survey towards an integration of big data analytics to big insights for value-creation[J]. Information Processing & Management, 2018, 54(5): 758-790. 下载链接:链接:https://pan.baidu.com/s/1…...

华为机考入门python3--(7)牛客7-取近似值

分类:数字 知识点: str转float float(str) 向上取整 math.ceil(float_num) 向下取整 math.floor(float_num) 题目来自【牛客】 import math def round_to_int(float_num): # 如果小数点后的数值大于等于0.5,则向上取整&#xf…...

C# Avalonia 11.0.6 绘图

在 Avalonia 11.0.6 中,Render 方法是被标记为 sealed 的,意味着不能直接在子类中重写这个方法。这样的设计可能是为了确保一致性和避免误用。 如果你需要在 Avalonia 中进行自定义的绘图操作,可以使用 DrawingContext,但是需要通…...

使用java -jar命令运行jar包提示“错误:找不到或无法加载主类“的问题分析

用maven把普通java项目打包成可运行的jar后,打开cmd用java -jar运行此jar包时报错: 用idea运行该项目则没有问题 。 其实原因很简单,我们忽略了2个细节。 java指令默认在寻找class文件的地址是通过CLASSPATH环境变量中指定的目录中寻找的。我…...

Tomcat组件架构与数据流

一、背景与简介 Tomcat我们都知道是一个开源的、实现了大部分Java EE、Servlet、JSP规范的Servlet容器, 允许我们将实现了Serlvet接口的Web程序war包进行部署运行。 但是你有对Tomcat做过细致的学习么? 我相信大部分同学和我一样,之前也是只会进行简单使用&#x…...

AES算法:数据传输的安全保障

在当今数字化时代,数据安全成为了一个非常重要的问题。随着互联网的普及和信息技术的发展,我们需要一种可靠的加密算法来保护我们的敏感数据。Advanced Encryption Standard(AES)算法应运而生。本文将介绍AES算法的优缺点、解决了…...

前端小案例——动态导航栏文字(HTML + CSS, 附源码)

一、前言 实现功能: 这案例是一个具有动态效果的导航栏。导航栏的样式设置了一个灰色的背景,并使用flex布局在水平方向上平均分配了四个选项。每个选项都是一个li元素,包含一个文本和一个横向的下划线。 当鼠标悬停在选项上时,选项的文本颜色…...

前置机、堡垒机(跳板机)【2024-02-04】

文章目录 0、前言1、前置机1.1、概念1.2、功能1.3、使用场景1.4、总结 2、堡垒机2.1、概念2.2、功能2.3、使用场景2.4、总结 3、前置机和堡垒机3.1、设计理念与目的3.2、功能3.3、使用场景 0、前言 文章借鉴: https://blog.csdn.net/weixin_45565886/article/detai…...

从编程中理解:大脑的短期记忆和长期记忆

在编程中,我们可以将大脑的短期记忆和长期记忆类比为程序中的变量作用域和持久化存储。在Unity C#编程环境下,可以这样解释: 假设金庸武侠世界中的人物张无忌正在修炼九阳真经。我们用C#代码来模拟他学习武功的过程,其中涉及的“…...

Rust 本地文档的使用:rustup doc

Rust 是一种系统级编程语言,以其安全性、速度和内存控制能力而闻名。为了方便开发者更好地了解并利用 Rust 标准库和工具链中的功能,Rust 提供了一种内置的文档浏览方式——通过 rustup doc 命令。 安装 rustup 在查阅 Rust 文档之前,确保你…...

uni-app切换页面刷新,返回上一页刷新(onShow钩子函数的使用)

切换页面刷新:通过onShow()便可实现 返回上一页通过uni.navigateBack({delta: 1});实现 以返回上一页刷新为例 从B页面返回上一页到A页面,在A页面写入方法refreshHandler() //a.vue methods: { // 执行刷新逻辑refreshHandler() {uni.request({ur…...

adb 无线连接 操作Android设备

最近集五福活动比较热门 可以用这个工具 用自己擅长的语言写一个循环程序 运行起来就可以 自动帮我们 看视频得福卡了 很方便 while (true) {sleep(mt_rand(15, 25));system(adb shell input swipe 500 2000 500 1000 100); } 1. 首先下载 安卓开发工具 adb adb网盘链接 链接…...

春节运维不打烊:一体化运维高效保障企业IT与机房环境

随着技术的不断发展和企业数字化转型的深入,IT运维已经成为企业运营不可或缺的一部分。尤其在春节期间,一体化运维管理系统以其独特的技术特性和卓越的功能,为企业的稳定运行提供了坚实保障,确保了节日的祥和与工作的连续高效。 一…...

类银河恶魔城学习记录1-5 CollisionCheck源代码 P32

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Player.cs using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; u…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)&#xff0…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...