Spark Shuffle

  一.HashShuffle

    普通机制:产生磁盘小文件的数量为:M(map task number)*R(reduce task number)

    

    过程:

      1.map task处理完数据之后,写到buffer缓冲区,buffer的大小为32k,个数与reduce task个数一致

      2. 每个buffer缓存区满32k后会溢写磁盘,每个buffer最终对应一个磁盘小文件

      3.reduce task拉取数据

    问题:

      1.shuffle write,read 频繁

      2.占用内存过多,容易造成gc以及出现OOM

      3.磁盘小文件多,会造成频繁I/O,效率降低

    合并机制:产生磁盘小文件的数量为:C(core number)*R(reduce task number)

    

    过程:

      1.map task处理完数据之后,写到buffer缓冲区,buffer的大小为32k,个数与reduce task个数一致

      2.Executor中每个core中的task共用一份buffer缓冲区

      3.每个buffer缓存区满32k后会溢写磁盘,每个buffer最终对应一个磁盘小文件

      4.reduce task拉取数据

  二.SortShuffle

    普通机制:产生磁盘小文件数量:2*M(map task number)

    

    步骤:

      1.map task处理完数据之后,首先写入一个5M的数据结构

      2.sortShuffle有不定期估算机制,来估算这个内存结构的大小,当估算超过真实的大小,会申请内存:2*估算大小-当前大小

      3.申请到内存继续写入内存数据结构,申请不到会溢写磁盘

      4.溢写磁盘过程中有排序,每批1万条数据溢写,最终对应两个磁盘文件:一个索引文件,一个数据文件

      5.reduce task拉取数据首先读取索引文件,再拉取数据

    bypass机制:产生磁盘小文件数量:2*M(map task number)

    

    步骤:

      1.map task处理完数据之后,首先写入一个5M的数据结构

      2.sortShuffle有不定期估算机制,来估算这个内存结构的大小,当估算超过真实的大小,会申请内存:2*估算大小-当前大小

      3.申请到内存继续写入内存数据结构,申请不到会溢写磁盘

      4.溢写磁盘过程中没有排序,每批1万条数据溢写,最终对应两个磁盘文件:一个索引文件,一个数据文件

      5.reduce task拉取数据首先读取索引文件,再拉取数据

Spark Shuffle机制的更多相关文章

  1. Spark Shuffle机制详细源码解析

    Shuffle过程主要分为Shuffle write和Shuffle read两个阶段,2.0版本之后hash shuffle被删除,只保留sort shuffle,下面结合代码分析: 1.Shuff ...

  2. spark shuffle 机制

    spark shuffle 分为两种 1.byPassSortShuffle 发生条件分区数<=200:无排序及聚合操作 主要是直接按照分区号写文件,有多少分区写多少文件 不做任何排序,简单直接 ...

  3. 【Spark】Spark的Shuffle机制

    MapReduce中的Shuffle 在MapReduce框架中,shuffle是连接Map和Reduce之间的桥梁,Map的输出要用到Reduce中必须经过shuffle这个环节,shuffle的性 ...

  4. 【Spark篇】---Spark中Shuffle机制,SparkShuffle和SortShuffle

    一.前述 Spark中Shuffle的机制可以分为HashShuffle,SortShuffle. SparkShuffle概念 reduceByKey会将上一个RDD中的每一个key对应的所有val ...

  5. spark的shuffle机制

    对于大数据计算框架而言,Shuffle阶段的设计优劣是决定性能好坏的关键因素之一.本文将介绍目前Spark的shuffle实现,并将之与MapReduce进行简单对比.本文的介绍顺序是:shuffle ...

  6. Spark Shuffle原理、Shuffle操作问题解决和参数调优

    摘要: 1 shuffle原理 1.1 mapreduce的shuffle原理 1.1.1 map task端操作 1.1.2 reduce task端操作 1.2 spark现在的SortShuff ...

  7. Spark Shuffle数据处理过程与部分调优(源码阅读七)

    shuffle...相当重要,为什么咩,因为shuffle的性能优劣直接决定了整个计算引擎的性能和吞吐量.相比于Hadoop的MapReduce,可以看到Spark提供多种计算结果处理方式,对shuf ...

  8. 【Spark学习】Apache Spark安全机制

    Spark版本:1.1.1 本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接: http://www.cnblogs.com/zhangningbo/p/4135808.html 目录 W ...

  9. Spark工作机制简述

    Spark工作机制 主要模块 调度与任务分配 I/O模块 通信控制模块 容错模块 Shuffle模块 调度层次 应用 作业 Stage Task 调度算法 FIFO FAIR(公平调度) Spark应 ...

随机推荐

  1. mysql 开发基础系列9 存储引擎 MyISAM 介绍

    MyISAM是mysql 默认存储引擎,它不支持事务,外键.但访问速度快,对事务完整性没有要求或者以select,insert 为主的应用基本上都可以使用这个引擎.每个MyISAM在磁盘上存储成3个文 ...

  2. Android--数据持久化之SQLite

    前言 对于一个应用程序而言,数据持久化是必不可少的,Android程序也不例外.这篇博客将介绍Android中关于SQLite的使用,SQLite是一种嵌入式的数据库引擎,专门适用于资源有限的设备上进 ...

  3. salesforce lightning零基础学习(十二) 自定义Lookup组件的实现

    本篇参考:http://sfdcmonkey.com/2017/01/07/custom-lookup-lightning-component/,在参考的demo中进行了简单的改动和优化. 我们在ht ...

  4. Google的java工具类Guava

    前言 google开发java项目肯定也不想重复造轮子,所以肯定也有工具类,就是它了:Guava 我将举例几个实际的例子,发挥这个工具类好用的功能.更多的方法和功能,还有内部的实现可以直接参考http ...

  5. ES6躬行记(1)——let和const

    古语云:“纸上得来终觉浅,绝知此事要躬行”.的确,不管看了多少本书,如果自己不实践,那么就很难领会其中的精髓.自己研读过许多ES6相关的书籍和资料,平时工作中也会用到,但在用到时经常需要上搜索引擎中查 ...

  6. 基于 LWIP 建立 TCP Server 与主机通信实验

    LWIP 版本:2.0.3 上一篇文章是写如何将 LWIP 移植到板子上,今天晚上记录基于 LWIP 实现与主机的网络通信. 先是打开了原子的实验例程,大概浏览了一遍,觉得 TCP 网络网络通信也就是 ...

  7. 学会这个删库再也不用跑路了~ --技术流ken

    前言 相信每一个学IT的人或多或少都听说过从删库到跑路这个梗~下图也是在各种交流群屡禁不止,新人听着也是瑟瑟发抖. 人们茶余饭后,街头巷角难免要问... 下面技术流ken就教给各位新手们一招删库再也不 ...

  8. SpringBoot学习(六)-->SpringBoot的自动配置的原理

    Spring Boot的自动配置的原理 Spring Boot在进行SpringApplication对象实例化时会加载META-INF/spring.factories文件,将该配置文件中的配置载入 ...

  9. mysql+mycat实现读写分离

    centos7       master slave mycat1.6 client 192.168.41.10 192.168.41.11 192.168.41.12 192.168.41.13 实 ...

  10. [angularjs] angularjs系列笔记(四)控制器

    Scope作用域 Scope作用域是应用在HTML视图和Js控制器之间的纽带 Scope是一个对象,有可用的属性和方法 根作用域 所有的应用都有一个$rootScope,它可以作用在ng-app指令包 ...