返回顶部
首页 > 资讯 > 数据库 >SparkShuffle机制
  • 410
分享到

SparkShuffle机制

SparkShuffle机制 2015-10-12 07:10:23 410人浏览 无得
摘要

在早期版本的spark中,shuffle过程没有磁盘读写操作,是纯内存操作,后来发现效率较低,且极易引发OOME,较新版本的Shuffle操作都加入了磁盘读写进行了改进。 1、未经优化的HashShuffleManager:上一

SparkShuffle机制

在早期版本的spark中,shuffle过程没有磁盘读写操作,是纯内存操作,后来发现效率较低,且极易引发OOME,较新版本的Shuffle操作都加入了磁盘读写进行了改进。

1、未经优化的HashShuffleManager:上一个stage中每一个task会对下一个stage的每一个task写一份数据文件,假定上一个stage有N个task,下一个stage有M个task,此时由上到下形成N个1对M的映射关系,总共产生【N
M】个文件。这种方式的优点是思路简单,数据文件的逻辑隔离性更强。缺点是在磁盘上产生的文件个数太多,每个文件的读写都需要建立管道等操作,过多的文件势必增加额外的开销,效率较低。【同将多个小文件打包为一个大文件再拷贝,比直接拷贝多个小文件更快,一个道理】

2、优化过的HashShuffleManager:上一个stage中每一个task共同写下一个stage的每一个task独有的数据文件,假定上一个stage有N个task,下一个stage有M个task,此时由上到下形成M个N对1的映射关系,总共产生M个文件(文件数量只取决于下一个stage的task数量)。由于文件数量的减少,性能得到了一定的提升。
**
3、SortShuffleManager:这是当前版本中使用的方式,进一步减少数据文件个数,阶段之间只通过2个文件来传递数据【索引文件、数据文件】。在上一个阶段中,每个task都将数据在内存中进行排序生成文件(如果内存不够用就溢写到磁盘),将多个排序后的文件合并到同一个数据文件中,配合索引文件,下游task就能高效的完成读取操作。
由于排序操作是一个相对低效的操作,所以在小数据量时可以使用Hash算法来达到快速定位的目的。此时就轮到bypass机制,其内容是当shuffle-map-task数量小于bypaSSMergeThreshold(默认200个)时或者不是聚合类shuffle,就不采用排序而换为Hash操作。

您可能感兴趣的文档:

--结束END--

本文标题: SparkShuffle机制

本文链接: https://lsjlt.com/news/4488.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SparkShuffle机制
    在早期版本的Spark中,shuffle过程没有磁盘读写操作,是纯内存操作,后来发现效率较低,且极易引发OOME,较新版本的Shuffle操作都加入了磁盘读写进行了改进。 1、未经优化的HashShuffleManager:上一...
    99+
    2015-10-12
    SparkShuffle机制
  • Zookeeper机制
    顾名思义 zookeeper 就是动物园管理员,他是用来管 hadoop(大象)、Hive(蜜蜂)、pig(小 猪)的管理员, Apache Hbase 和 Apache Solr 的分布式集群都用到了 zookeeper;Zoo...
    99+
    2021-03-06
    Zookeeper机制
  • Sqlite—锁机制
    https://blog.csdn.net/zhangsheng_1992/article/details/52598396 https://blog.csdn.net/xiyangyang8110/article/details/5216...
    99+
    2017-08-22
    Sqlite—锁机制
  • fail-fast机制
    在JDK的Collection中我们时常会看到类似于这样的话:例如,ArrayList:注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽 最大努力抛出 Concurre...
    99+
    2018-02-01
    java教程 java
  • PostgreSQL VFD机制
    1、结构体VFD机制中由结构体struct vfd来维护。其中各个成员变量的意义如下表所示:fdvfd实际对应的物理文件文件描述符fdstateFD_DELETE_AT_CLOSE:表示文件在关闭时需删除F...
    99+
    2024-04-02
  • python 锁机制
    锁(LOCK)当有两个或跟多个线程或进程需要操作一个变量或进程时,会出现意想不到的结果,这是因为线程或进程时迸发进行的,对同意变量或文件操作时,会出现同时对其操作,从到导致逻辑错误。#!/bin/usr/env python #coding...
    99+
    2023-01-31
    机制 python
  • python import 机制
    Python 环境初始化过程中就会将sys module加载到内存中,但是为了local空间更干净,需要用户亲自导入,通知python.module对象实际上是一个dict在维护着,hello.__dict__打印出属性和属性值...
    99+
    2023-01-31
    机制 python import
  • 浅谈Python pygame绘制机制
    pygame绘制机制简介  屏幕控制 pygame.display • 用来控制Pygame游戏的屏幕 • Pygame有且只有一个屏幕 • 屏幕左上角坐标为(0,0) ...
    99+
    2022-06-02
    pygame绘制机制 python pygame
  • 浅谈Android IPC机制之Binder的工作机制
    目录进程和线程的关系跨进程的种类Serializable,Parcelable接口Binder进程和线程的关系 按照操作系统中的描述,线程是CPU调度的最小单位,同时线程也是一种有限...
    99+
    2024-04-02
  • kafka的重试机制和ack机制是什么
    Kafka的重试机制是指在消息发送过程中,如果发送失败或者出现异常,Kafka会自动尝试重新发送消息。重试机制的目的是确保消息能够成...
    99+
    2023-10-26
    kafka
  • Android View 绘制机制的详解
    View 绘制机制一、 View 树的绘图流程当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 draw。整个 View 树...
    99+
    2023-05-31
    android view 绘制
  • Redis 哨兵机制
    虽然现在使用哨兵+主从的方式比较少了,但通过理解 Redis 哨兵,我们能获得更深入的分布式的知识。 https://redis.io/topics/sentinel sentinel基本配置 sentinel的作用: 1...
    99+
    2014-07-04
    Redis 哨兵机制
  • 【SQL SERVER】锁机制
    SQL Server中锁机制保证并发情况下的数据访问,开发过程中利用好索引减少数据,能减少数据扫描数据加锁的过程,合理规范使用事务,能减少死锁发生 锁定是 SQL Server 数据库引擎用来同步多...
    99+
    2018-04-02
    【SQL SERVER】锁机制
  • MySQL同步机制
    复制步骤: Slave 上面的IO线程连接上 Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容 Master 接收到来自 Slave 的 IO 线程的请求后,通过负责复制的 IO 线程根据请求信息读取指定...
    99+
    2015-09-09
    MySQL同步机制 数据库入门 数据库基础教程 数据库 mysql
  • Redis事件机制
    Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件: 文件事件:Redis通过套接字与客户端连接,文件事件是服务器对套接字操作的抽象。 时间事件:Redis服务器中的一些操作需要给定的时间点执行,时间事件时对这类定时操作的抽...
    99+
    2014-08-09
    Redis事件机制
  • Android窗口机制
    DecorView通过PhoneWindow与WindowManagerService通信原理图 每个Activity都有一个Window对象...
    99+
    2022-06-06
    Android
  • Oracle中锁机制
    锁:oracle 中用来 实现并发访问控制的机制;分类 :表级锁、行级锁;锁的应用:当执行insert、delete、update时,oracle会自动应用行级锁;执行select时不会加锁;select ...
    99+
    2024-04-02
  • oracle锁的机制
    在现代的多用户多任务系统中,必然会出现多个用户同时访问共享的某个对象,这个对象可能是表,行,或者内存结构,为了解决多个用户并发性访问带来的数据的安全性,完整性及一致性问题,必须要有一种机制,来使对这些共享资...
    99+
    2024-04-02
  • mysql的锁机制
    锁概述mysql锁机制的特点: 不同存储引擎支持不同的锁机制。MyISAM和MEMORY存储引擎支持表级锁;BDB存储引擎采用页面锁;InnoDB存储引擎支持行级锁。表级锁:开销小,加锁快,不会出现死锁,锁...
    99+
    2024-04-02
  • Java 反射机制
    简介: Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作