【spark面试】spark的shuffle过程

news/2024/11/8 23:02:58/

      概述  

        所有的shuffle的过程本质上就是一个task将内存中的数据写入磁盘,然后另一个task将磁盘中的数据读入内存的过程。

        对于mapreduce来说,我们将内存中的数据写入磁盘成为maptask,将磁盘中的数据读入内存称为reducetask。

        而对于spark来说,有的算子的执行会同时会进行写入和读出,这就是shuffle算子,shuffle算子都是转换算子。

面试题1:什么是触发算子,什么是转换算子,什么是shuffle算子

        触发算子:

take,count,saveAsTextFile,foreach,foreachpartition,min,max,mean,top,takeOrdered,collect,first,reduce。

        转换算子:

filter,map,mapPartitions,flatMap,union,distict,mapValues,keys,values,sortBy,sortByKey,reduceByKey,groupBykey,repartition,coalesce,join类(join,fullOuterJoin,leftOuterJoin,rightOuterJoin)

        shuflle算子:

flatMap,distinct,sortBy,sortByKey,reduceByKey,groupByKey,join类(join,fullOuterJoin,leftOuterJoin,rightOuterJoin),repartition,coalesce(根据情况)

spark中的shuffle

1)Hash Based Shuffle

特点:没有排序,只分区,每个Task按照ReduceTask个数生成多个文件【M * R】 
优点:简单,数据量比较小,性能就比较高 
缺点:小文件非常多,数据量比较大性能非常差

2)Hash Based Shuffle 【优化后的,File Consolidation机制】

两个Executor ,4个ReduceTask,那就是 2 * 4 = 8
进步在哪里?进度在于如果是以前 4 个 map 4 个 reduce  形成 16 个文件,现在引入 executor 以后,生成 8 个文件。

3)Sort Based Shuffle [目前最新的]

对于这种shuffle来说,需要将写和读分开展示

Shuffle Write

第一种:SortShuffleWriter:普通Sort Shuffle Write机制

与MR的Map端Shuffle基本一致
生成一个整体基于分区和分区内部有序的文件和一个索引文件
特点:有排序,先生成多个有序小文件,再生成整体有序大文件,每个Task生成2个文件,数据文件和索引文件

第二种:BypassMergeSortShuffleWriter

类似于优化后的Hash Based Shuffle
先为每个分区生成一个文件,最后合并为一个大文件,分区内部不排序
跟第一个相比,处理的数据量小,处理的分区数小于200 ,不在内存中排序。
场景:数据量小

第三种:UnsafeShuffleWriter

Partition个数不能超过2^24-1个(大于200用这个)
场景:数据量大
Shuffle Read

只有一种

类似于MapReduce中的Reduce端shuffleMR:Reduce端的shuffle过程一定会经过合并排序、分组

        


http://www.ppmy.cn/news/1545477.html

相关文章

Java项目实战II基于Spring Boot的个人云盘管理系统设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 基于Spring Boot的个人云盘管理系统设计…

小记-如何快速调整图片的分辨率

1.前言 在实际工作和开发中经常使用图片,有时候需要调整图片的质量,比如当图片大小很大不满足使用要求时,就需要降低图片质量,也就是压缩图片。 2.概念介绍 首先我们先明确一些概念,避免被网上形形色色的软件和所谓…

IPTABLE:Linux下的网络防火墙

IPTABLE:Linux下的网络防火墙 引言 在Linux系统中,IPtable是一种强大的网络防火墙工具,广泛应用于各种网络环境中。它不仅可以实现基本的包过滤功能,还能进行网络地址转换(NAT)、数据包记录、流量统计等高…

ETLCloud异常问题分析ai功能

在数据处理和集成的过程中,异常问题的发生往往会对业务运营造成显著影响。为了提高ETL(提取、转换、加载)流程的稳定性与效率,ETLCloud推出了智能异常问题分析AI功能。这一创新工具旨在实时监测数据流动中的潜在异常,自…

服务器作业(2)

架设一台NFS服务器,并按照以下要求配置 关闭防火墙 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 配置文件设置: [rootlocalhost ~]# vim /etc/exports 1、开放/nfs/shared目录,供所有用户查询资料 共享…

联网环境kubeadm安装k8s

1. 配置系统环境 在所有节点上执行以下配置步骤: 禁用 SELinux: setenforce 0 sed -i --follow-symlinks s/^SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config 关闭防火墙: systemctl disable firewalld systemctl stop firewalld …

基于vue3实现的聊天机器人前端(附代码)

<template><div class"container"><!-- 页面头部 --><header><h1>跟它说说话吧&#xff01;</h1><p>一个活泼的伙伴&#xff0c;为你提供情感支持&#xff01;</p></header><!-- 聊天容器 --><div c…

Go语言结构体、方法与接口

文章目录 一、结构体构造函数Go语言中的构造函数语法 二、结构体方法和接收器无参数和返回值值类型接收者指针类型接收者方法继承方法重写 三、结构体比较结构体比较要求结构体比较符号 四、接口声明接口定义接口特点接口格式标准格式接口的实现&#xff1a;空接口error接口 五…