Spark一些基础原理——Shuffle

本文介绍了Spark Shuffle的基本原理,包括Shuffle在MapReduce中的作用、执行过程、宽依赖判断以及不同类型的Shuffle机制,如HashBasedShuffle和SortedBasedShuffle。内容详细阐述了Stage划分、数据读写以及性能优化策略。
摘要由CSDN通过智能技术生成

自学背景知识:Spark基本工作原理Job、Task、Stage、MapReduce

lv0

Shuffle(洗牌)是介于MapReduce框架的中间阶段,Map负责实现其写入,Reduce实现其读取。大致过程就是将Map在内存中的缓存进行分区、排序、溢出到磁盘的数据进行抓取合并以重新持久化到磁盘与内存中,便于执行Reduce任务。(后接lv1-1)
其任务执行过程是在Stage阶段判断是否是宽依赖,存在宽依赖才会进行Shuffle。(后接lv1-2)
而对于带有宽依赖的RDD执行compute时会读取上一个Stage输出的Shuffle数据。(后接lv1-3)

lv1-1

过去Spark用的是基于Hash的,所带来的问题就是中间文件过多比较低效,中间文件数量与MapTask,ReduceTask的Core数正相关。目前Spark是基于sort。即将Mapper阶段的Task全部写到一个Data文件中,同时生成一个索引文件。Reduce阶段的每一个Task根据索引读取数据。从而降低随机磁盘I/O与内存开销。后续又引入了外部排序机制,即将数据放入内存改为记录级写入,以及动态资源分配等等。
Spark存在过HashBasedShuffle(已不用)、SortedBasedShuffle(默认)、TungstenSortedBasedShuffle(已并入前者由系统自动识别是否需要启用)三种方式。(后接lv2-1)

lv1-2

判断宽依赖是否存在,是基于存在ShuffleDependency宽依赖。届时会将Job划分成多个S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值