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

Spark系列文章:

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

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

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

目录

🍠Spark分布式运行原理

[1)🧀编程抽象类 RDD](#1)🧀编程抽象类 RDD)

2)🧀分区数据处理

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

[4) 🧀统一的结果类型](#4) 🧀统一的结果类型)

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

[1. 🧀设置方式: 可以通过Spark配置项进行设置](#1. 🧀设置方式: 可以通过Spark配置项进行设置)

[2. 🧀影响因素](#2. 🧀影响因素)

🍠Spark面试题总结:

[1. Spark是什么,用于什么场景?](#1. Spark是什么,用于什么场景?)

[2. Spark的优点](#2. Spark的优点)

[3. Spark为什么比MR效率高?](#3. Spark为什么比MR效率高?)

[4. Spark编程核心步骤](#4. Spark编程核心步骤)

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

[6. RDD是什么?](#6. RDD是什么?)

[7. 创建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核数,则所有计算都运行在一个线程当中,没有任何并行计算

    --localK:指定使用K个Core来运行计算,比如local2就是运行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

  1. 读数据库
相关推荐
未若君雅裁2 小时前
Kafka 数据存储与清理机制:Topic、Partition、Segment与日志删除
分布式·kafka
狒狒热知识8 小时前
AI赋能下企业新闻内容优化178软文网赋能权威资讯形成持续积累效应
大数据
盘古信息IMS9 小时前
盘古信息IMS V6 8.0重磅发布:以薪火AI数智平台点燃离散制造数智化引擎
大数据·人工智能·制造
论文小助手W68510 小时前
【ACM出版,EI检索】2026年人工智能与智慧城市国际学术会议(IC-AISC 2026)
大数据·人工智能·全文检索·智慧城市·交通物流
盖小雅11 小时前
自动化排班如何破解劳动法合规难题:从规则冲突到可追溯的排班表
大数据·运维·机器学习·自动化
Bechamz11 小时前
大数据开发学习Day43
大数据·学习
五度易链-区域产业数字化管理平台11 小时前
大数据驱动智慧招商:五度易链园区数字化解决方案
大数据
心疼你的一切12 小时前
高效内容生产:如何实现规模化创作
大数据·人工智能·ai·ai编程·ai写作
imbackneverdie13 小时前
深耕医学科研智能化十年,MedPeer打造新一代AI生物医学科研操作系统
大数据·人工智能·ai·信息可视化·数据分析·aigc·科研
Xuantong_9014 小时前
玄同科技亮相2026金砖新工业革命展览会,智启全球合作新篇
大数据·人工智能