Spark 内存迭代计算

这篇具有很好参考价值的文章主要介绍了Spark 内存迭代计算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spark内存迭代是每个task根据算子之间形成的DAG在内存中不断迭代计算的过程。

Spark 内存迭代计算

如图,带有分区的DAG以及阶段划分,可以从图中得到逻辑上最优的task分配。一个task是一个线程来具体执行。task1中的rdd1,rdd2,rdd3的迭代计算,都是由一个task(线程完成),这一阶段的这一条线,是纯内存计算。task1,task2,task3就形成了三个并行的内存计算管道。

Spark默认受到全局并行度的限制,除了个别算子有特殊分区情况,大部分的算子,都遵循全局并行度的要求,来规划自己的分区数,如果全局并行度是3,其实大部分算子的分区都是3。Spark计算,我们一般推荐只设置全局并行度,不再算子上设置并行度,除了一些排序算子外,计算算子就采用默认的分区就可以了文章来源地址https://www.toymoban.com/news/detail-425781.html

Spark是怎么做内存计算的?DAG的作用是什么?Stage阶段划分的作用是什么?

  1. Spark会产生DAG图
  2. DAG图会基于分区和宽窄依赖关系划分阶段
  3. 一个阶段内部都是窄依赖,在窄依赖内,如果形成前后1:1的分区对应关系,就可以产生许多内存迭代计算的管道
  4. 这些内存迭代计算的管道,就是一个个具体执行的task
  5. 一个task是一个具体的线程,任务跑在一个线程内,就是走内存计算

Spark为什么比MapReduce快?

  1. Spark算子丰富,MapReduce算子匮乏,MapReduce这个编程模型,很难在一套MR中处理复杂的任务,很多的复杂任务,是需要写多个MapReduce进行串联,多个MR串联通过磁盘交互数据
  2. Spark可以执行内存迭代,算子之间形成DAG基于依赖划分阶段后,在阶段内形成内存迭代管理,在算子交互上,和计算上可以尽量多的内存计算而非磁盘迭代。但是MapReduce的Map和Reduce之间的交互依旧是通过磁盘来交互的。

到了这里,关于Spark 内存迭代计算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云计算与大数据第16章 分布式内存计算平台Spark习题

    1、Spark是Hadoop生态(  B  )组件的替代方案。 A. Hadoop     B. MapReduce        C. Yarn             D.HDFS 2、以下(  D  )不是Spark的主要组件。 A. Driver      B. SparkContext       C. ClusterManager D. ResourceManager 3、Spark中的Executor是(  A  )。 A.执行器      B.主节

    2024年02月14日
    浏览(48)
  • 10 | Spark 查找每个单词的最大行号

    假设你有一个包含文本行号和文本内容的RDD,现在你想找出每个单词出现在哪些行,并计算它们出现的最大行号。 需求是从包含文本行号和文本内容的RDD中找出每个单词出现在哪些行,并计算它们出现的最大行号。 具体需求如下: 数据输入: 代码从一个包含文本行号和文本

    2024年02月09日
    浏览(31)
  • python3 统计redis中每个DB占用的内存大小

            在一些业务中,会使用多个DB来缓存不同类型的业务数据,有时候redis占用内存过高,造成服务异常。         redis可以通过dbsize命令来查看当前选择的DB的key的数量,有时候仅仅看key的数量可能还不能直观反映哪块业务数据占用内存多,redis也没有直接的命令可以

    2024年01月16日
    浏览(31)
  • python使用迭代生成器yield减少内存占用的方法

    在python编码中for循环处理任务时,会将所有的待遍历参量加载到内存中。 其实这本没有必要,因为这些参量很有可能是一次性使用的,甚至很多场景下这些参量是不需要同时存储在内存中的,这时候就会用到本文所介绍的迭代生成器yield。 首先我们用一个例子来演示一下迭代

    2024年04月28日
    浏览(24)
  • Spark(29):Spark内存管理

    目录 0. 相关文章链接 1. 堆内和堆外内存规划 1.1. 堆内内存 1.2. 堆外内存 2. 内存空间分配 2.1. 静态内存管理 2.2. 统一内存管理 3. 存储内存管理 3.1. RDD 的持久化机制 3.2. RDD的缓存过程 3.3. 淘汰与落盘 4. 执行内存管理 4.1. Shuffle Write 4.2. Shuffle Read  Spark文章汇总      

    2024年02月17日
    浏览(28)
  • 在python中实现使用迭代生成器yield减少内存占用的方法

    在python编码中for循环处理任务时,会将所有的待遍历参量加载到内存中。其实这本没有必要,因为这些参量很有可能是一次性使用的,甚至很多场景下这些参量是不需要同时存储在内存中的,这时候就会用到本文所介绍的迭代生成器yield。 首先我们用一个例子来演示一下迭代

    2024年02月11日
    浏览(29)
  • 深入理解 Spark(四)Spark 内存管理模型

    Executor 进程作为一个 JVM 进程,其内存管理建立在 JVM 的内存管理之上,整个大致包含两种方式:堆内内存和堆外内存。 一个 Executor 当中的所有 Task 是共享堆内内存的。一个 Work 中的多个 Executor 中的多个 Task 是共享堆外内存的。 堆内内存和堆外内存 大数据领域两个比较常见

    2024年01月24日
    浏览(35)
  • 7 | 计算每个键对应的平均值,并按降序排序

    假设您有一个包含销售订单的RDD,其中每个元素是一个键值对,其中键表示产品名称,值表示销售数量。您希望按产品名称对销售订单进行分组,并计算每个产品的总销售数量。最后,希望获得每个产品的总销售数量以及按产品名称分组的详细销售订单列表。 计算每个键对应

    2024年02月10日
    浏览(31)
  • hive on spark内存模型

    hive on spark的调优,那必然涉及到这一系列框架的内存模型。本章就是来讲一下这些框架的内存模型。 hive on spark的任务,从开始到结束。总共涉及了3个框架。分别是:yarn、hive、spark 其中,hive只是一个客户端的角色。就不涉及任务运行时的内存。所以这里主要讲的yarn和spark的

    2024年04月16日
    浏览(35)
  • Spark内核解析-内存管理7(六)

    Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色。理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行性能调优。本文中阐述的原理基于 Spark 2.1 版本。 在执行 Spark 的应用程序时,Spark 集群会启动 Driver 和

    2024年02月03日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包