Spark的并行度原理

一、什么是spark的并行度?

1,数据并行(逻辑并行)
就是同时执行,spark中的每一个作业都相当于一个application,每个application执行时会生成很多job,一个action操作触发一个job时,每个job就会拆分为多个stage,发生shuffle时就会多拆分出来一个,这个就是数据的并行
2,资源的并行度(物理并行)
主要是由excutor,和cpu核数确定

注意:必须要调整并行度,不然会影响运行效率,不合理的分配资源

二、怎么去优化,提供并行度?

1,task数量

官方给出的建议是task数量是cpu core的2~3倍

只有task足够的多才能更好的利用资源,但是如果task很多的话,资源少,那么就会先执行一批后再执行下一批

task = cpu core 这样也会导致快的task执行结束后,一些资源就会处于等待状态,浪费资源

具体如何设置呢?

task分为map 的task 还设有reduce洗牌的task
- map的task: spark.default.parallelism 
- reduce的task:spark.sql.shuffle.partitions
2,添加主机提高cpu核数
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Spark内部运行原理是,它通过一系列的步骤来处理数据,包括读取数据、转换数据、运行计算任务和存储结果。它使用一个叫做RDD(可分配数据集)的抽象来表示数据,这样可以更容易地处理数据。它还使用一个叫做Spark Core的库来处理数据,这个库可以分发任务到多个节点,并且可以让多个节点协同工作来处理数据。 ### 回答2: Spark是一个快速、通用的大数据处理引擎,它采用了分布式计算的方式来处理大规模数据集。Spark的内部运行原理可以简单概括为以下几个关键点: 1. 弹性分布式数据集(RDD):Spark的核心概念是弹性分布式数据集(RDD),它是一个可分区、可并行处理的数据集合。Spark将数据分成多个RDD,可以在集群的多个节点上自动并行处理。 2. DAG调度:Spark将用户的操作转化为有向无环图(DAG),以表示计算过程中的依赖关系。Spark通过DAG调度,将整个计算流程划分为多个阶段(Stage),以实现任务的并行处理和调度。 3. 分布式数据处理:Spark可以将数据集合分成多个分区,并将每个分区的计算任务分发到不同的节点上并行执行。通过分区级别的并行处理,Spark能够高效地处理大规模数据集,并实现性能上的显著提升。 4. 内存计算:Spark将数据存储在内存中,以避免频繁的磁盘读写操作。通过充分利用内存计算能力,Spark能够在处理数据时提供更高的计算速度和性能。 5. 数据流水线:Spark将数据处理过程划分为多个阶段,并通过内存中的缓存和数据流水线技术,减少中间结果的计算和存储开销。这种方式能够提高计算效率,并减少数据处理的延迟。 总之,Spark的内部运行原理包括了RDD的分布式计算模型、DAG调度、分区级别的并行处理、内存计算和数据流水线等关键技术。通过这些技术的有机结合,Spark能够高效地处理大规模数据集,并提供快速的数据分析和处理能力。 ### 回答3: Spark内部运行原理主要包括以下几个方面。 首先,Spark运行的核心是Resilient Distributed Dataset(RDD),它是一个可容错、可并行处理的数据集合。RDD可以通过数据源创建,或者通过对已有RDD的转换操作得到。RDD的分区决定了数据的并行度,每个分区都存储着数据的一个子集。 其次,Spark运行时采用了分布式的集群架构。集群由一个主节点(即Driver)和多个从节点(即Executors)组成。主节点负责任务的调度和分发,从节点负责具体的任务执行。主节点将任务分成多个Stage,每个Stage包含一系列的任务,并通过DAG表示Stage之间的依赖关系。 然后,Spark通过一种称为Transformations的操作来对RDD进行转换。Transformations分为窄依赖和宽依赖。窄依赖意味着每个父RDD的分区仅有一个子RDD的分区依赖,这可以使得数据传输更快。而宽依赖意味着每个父RDD的分区可能有多个子RDD的分区依赖,这会引入shuffle操作来重新分区,增加了计算和数据传输的开销。 最后,Spark的计算模型是基于弹性分布式数据集的。Spark将计算过程划分为一系列的Stage,并将每个Stage划分为多个Task。Task在Executor上并行执行,每个Task会处理一个或多个RDD的分区。计算结果会被缓存在内存中,可以被后续的计算使用,从而提高了计算效率。 综上所述,Spark内部运行原理主要包括RDD、集群架构、Transformations、计算模型等方面。通过这些机制,Spark实现了高效的分布式计算和数据处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的三板斧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值