阿里云RemoteShuffleService 新内容:AQE 和流控
2025-08-23 12:18
def getReader[K, C](
handle: ShuffleHandle,
startMapIndex: Int,
endMapIndex: Int,
startPartition: Int,
endPartition: Int,
context: TaskContext,
metrics: ShuffleReadMetricsReporter): ShuffleReader[K, C]
RSS 驱动程式回顾RSS 的驱动程式外观设计是 Push Shuffle + Partition 样本交联,即相同的 Mapper 把统称同一个 Partition 的样本仰给同一个 Worker 继续做交联,Reducer 直读书交联后的文档。如下由此可知示意由此可知。
在驱动程式外观设计之外,RSS 还继续做到了多日志,全链路容错,Master HA,硬盘容错,自适应Pusher,滚动升级等功用,详见[1]。
RSS 反对 Partition 拆分Partition 拆分对 Shuffle 基础的需求量是反对全域 Partition,在 RSS 之前每个 Partition 相异着一个文档,因此天然反对,如下由此可知示意由此可知。
RSS 反对 Join 策略性转换Join 策略性转换对 Shuffle 基础的需求量是能够反对 LocalShuffleReader。由于 RSS 的 Remote 同上征,样本存放在 RSS 战略性,仅有当 RSS 和计算战略性混部的过场下才一定会发挥作用在本地,因此暂不反对 Local Read(将来一定会最佳化混部过场并加以反对)。必须注意的是,尽管不反对 Local Read,但并不直接影响 Join 的读到出,RSS 反对 Join 读到出最佳化如下由此可知示意由此可知。
RSS 反对 Join 倾斜度最佳化在 AQE 的三个过场之前,RSS 反对 Join 倾斜度最佳化是最为困难的一点。RSS 的驱动程式外观设计是 Partition 样本交联,借此是把 Shuffle Read 的随机读书彻底改变为先后顺序读书,从而增强效率和耐用性。多个 Mapper 同时仰送给 RSS Worker,RSS 在缓存交联后刷盘,因此 Partition 文档之前来自相同 Mapper 的样本是无序的,如下由此可知示意由此可知。
Join 倾斜度最佳化必须读书取全域 Map,例如读书 Map1-2的样本,常规的继续只不过有两种:
读书取完整文档,并丢弃全域之外的样本。 过渡到索引文档,记录每个 Block 的左边及所属 MapId,仅有读书取全域内的样本。这两种继续只不过的疑问显而易见。法则1一定会避开大量冗余的硬盘读书;法则2本质上回退出了随机读书,丧失了 RSS 最驱动程式的优势,并且创建索引文档出为通用的 Overhead,即使是针对非倾斜度的样本( Shuffle Write 每一次之前难以吻合数据分析是否发挥作用倾斜度)。
为了解决问题以上两个疑问,我们提议了取而代之外观设计:都由动 Split + Sort On Read。
都由动Split
倾斜度的 Partition 大不确定性 Size 非常大,极端状况一定会同样打爆硬盘,即使在非倾斜度过场出现大 Partition 的可能性依然不小。因此,从硬盘负载互补的角度,监控 Partition 文档的 Size 并继续做都由动 Split (匹配阻抗256m)是非常必要的。
Split 发生时,RSS 一定会为当前 Partition 重上新重新分配一对 Worker(都由日志),原先样本将仰给取而代之 Worker。为了避开 Split 对即将运行的 Mapper 避开直接影响,我们提议了 Soft Split 的法则,即当会有 Split 时,RSS 异步去准备取而代之 Worker,Ready 在此之后去热和更上新 Mapper 的 PartitionLocation 信息,因此不一定会对 Mapper 的 PushData 避开任何干扰。基本工序如下由此可知示意由此可知。
Sort On Read
为了避开随机读书的疑问,RSS 采行了 Sort On Read 的策略性。具体情况而言,File Split 的首次 Range 读书一定会会有先后顺序(非 Range 读书不一定会会有),排好序的文档连同其左边索引读到回硬盘。原先的 Range 读书方能确保是先后顺序读书取。如下由此可知示意由此可知。
为了避开多个 Sub-Reducer 等待同一个 File Split 的先后顺序,我们打散了各个 Sub-Reducer 读书取 Split 的先后顺序,如下由此可知示意由此可知。
Sort 最佳化
Sort On Read 可以有效避开冗余读书和随机读书,但必须对 Split File(256m)继续做先后顺序,本节讨论先后顺序的继续做到及花费。文档先后顺序包括3个步骤:读书文档,对 MapId 继续做先后顺序,读到文档。RSS 的 Block 匹配256k,Block 的数量大概是1000,因此先后顺序的每一次非常短时间,都由要花费在文档读书读到。整个先后顺序每一次大致有三种解决问题方案:
预先重新分配文档大小的缓存,文档基本读书入,判别并先后顺序 MapId,按 MapId 先后顺序把 Block 读到回硬盘。 不重新分配缓存,Seek 到每个 Block 的左边,判别并先后顺序 MapId,按 MapId 先后顺序把原文档的 Block transferTo 上新文档。 重新分配小块缓存(如256k),先后顺序读书完整个文档并判别和先后顺序MapId,按MapId先后顺序把原文档的Block transferTo上新文档。从 IO 的思路,全因,解决问题方案1通过适用极少量缓存,不发挥作用先后顺序读书读到;解决问题方案2发挥作用随机读书和随机读到;解决问题方案3发挥作用随机读到;直观上解决问题方案1效率好处。然而,由于 PageCache 的发挥作用,解决问题方案3在读到文档时原文档大不确定性缓发挥作用 PageCache 之前,因此实测下来解决问题方案3的效率好处,如下由此可知示意由此可知。
同时解决问题方案3无需空置进程额外缓存,故 RSS 采行解决问题方案3的迭代。我们同时还飞行测试了 Sort On Read 跟上述的不先后顺序、仅有继续做索引的随机读书法则的对比,如下由此可知示意由此可知。
基本工序
RSS 反对 Join 倾斜度最佳化的基本工序如下由此可知示意由此可知。
RSS流控流控的都由要借此是防止 RSS Worker 缓存被打爆。流控多半有两种方式:
Client 在每次 PushData 前先向 Worker 留出缓存,留出出功才会有 Push。 Worker 端反压。由于 PushData 是非常高频且效率关键因素的操作,若每次仰送都额外完成一次 RPC 交互,则花费太大,因此我们采行了反压的策略性。以 Worker 的思路,注入样本有两个源:
Client 仰送的样本 都由日志递送的样本如下由此可知示意由此可知,Worker2 既转给来自 Mapper 仰送的 Partition3 的样本,也转给 Worker1递送的 Partition1 的日志样本,同时一定会把 Partition3 的样本发给相异的从日志。
其之前,来自 Mapper 仰送的样本,当且仅有当同时做到以下条件时才一定会囚禁缓存:
Replication 分派出功 样本读到盘出功来自都由日志仰送的样本,当且仅有当做到以下条件时才一定会囚禁缓存:
样本读到盘出功我们在外观设计流控策略性时,不仅有要考量见下文(降低注入的样本),更要考量泄流(缓存能及时囚禁)。具体情况而言,高潮水我们定义了两档缓存阻抗(分别相异85%和95%缓存适用),低潮水只有一档(50%缓存适用)。降至高潮水一档阻抗时,会有流控,停止转给 Mapper 仰送的样本,同时强制刷盘,从而降至泄流的目的。仅有限制来自 Mapper 的注入并不能控制来自都由日志的输水,因此我们定义了高潮水第二档,降至此阻抗时将同时停止转给都由日志递送的样本。当潮水低于低潮水后,恢复正常稳定状态。基本工序如下由此可知示意由此可知。
效率飞行测试我们对比了 RSS 和原生的 External Shufle Service(ESS) 在 Spark3.2.0 开启 AQE 的效率。RSS 采行混部的方式,没有额外空置任何电脑程式人力资源。此外,RSS 所适用的缓存为8g,仅有占电脑程式缓存的2.3%(电脑程式缓存352g)。具体情况环境如下。
飞行测试环境
硬件:
header 电脑程式分组 1x ecs.g5.4xlarge
worker 电脑程式分组 8x ecs.d2c.24xlarge,96 CPU,352 GB,12x 3700GB HDD。
Spark AQE 就其内置:
spark.sql.adaptive.enabled true
spark.sql.adaptive.coalescePartitions.enabled true
spark.sql.adaptive.coalescePartitions.initialPartitionNum 1000
spark.sql.adaptive.skewJoin.enabled true
spark.sql.adaptive.localShuffleReader.enabled false
RSS 就其内置:
RSS_MASTER_MEMORY=2g
RSS_WORKER_MEMORY=1g
RSS_WORKER_OFFHEAP_MEMORY=7g
TPCDS 10T飞行测试集
我们飞行测试了10T的 TPCDS,E2E 来看,ESS 工期11734s,RSS 单日志/两日志分别工期8971s/10110s,分别比 ESS 短时间了23.5%/13.8%,如下由此可知示意由此可知。我们观察到 RSS 开启两日志时网络带宽降至时限,这也是两日志比单日志低的都由要因素。
具体情况每个 Query 的星期对比如下:
原文链接:
本文为阿里云原创内容,而无须允许不得转载。
。合肥看儿科哪个医院比较好重庆看白癜风去哪个医院好
常州看男科去哪里好
深圳看妇科哪个医院比较好
成都白癜风治疗哪家好
-
监察百官、搜集情报、劝课农桑,司隶校尉称颂是东汉“全能工具人”
推举专才,献言力劝阻 里面国是习惯的统治阶级配义发展中国家,“司隶校迁任”的的资讯网,还可以向臣子推举专才,吏僚制度在里面国从古延续至晋朝,对于吏僚的选拔,也大都采取世袭
-
需求低迷,黑海大米价格跌至3个月低点
外媒2月7日假消息:由于举例来时说需求起伏不定和期货零售商急跌,黑海地区的大米出口处出价降到3个月低点。 高盛表示,现在是买方零售商,主要进口国需要尽快库存。零售商对摩尔多瓦和俄罗斯之间激
- 10-22助汉武帝登上皇位,不禁什么来头?两人的爱情创造出一成语
- 10-22乌克兰2021/22年度大米出口同比增长30%,价格骤降
- 10-22狄仁杰愧对武则天,一次人才举荐,差点无济于事50年基业
- 10-22囯元期货与金寨县签订“农副产品(茶油)消费帮扶采购协定”
- 10-22至诚,争当英雄
- 10-22上期所优秀贵金属分析师王彦青:警惕贵金属避风港功能的失效助长的均值回归效应
- 10-22我国古代几乎没有穷人的王朝时,仅存在10余年,皇帝的名字妇孺皆知
- 10-22兰格点评:一季度钢企业绩或将趋稳
- 10-22民国初年山东多响马,悍匪陈三坎到底有多坏,或颠覆你的认知
- 10-22氢氧化锂稳定投入生产输出 天华超净去年锂电材料净利润10.81亿