而使用NM内置的shuffle服务本身就是瓶颈,扩展起来非常不灵活,而且扩展的容量也非常有限。 外部remote shuffle service 想象一下,如果能够把Spark的shuffle service单独部署为外部的一套集群,然后逐步把一部分的spark任务的shuffle迁移出来,并且可以针对不同的任务场景配置使用不同的shuffle服务,并且能够对shuffle服务进行合理...
因为趣头条的大数据业务目前全都部署在阿里云上,阿里云EMR团队和趣头条的大数据团队进行了深入技术共创,共同研发了Remote Shuffle Service(以下简称RSS),旨在解决Spark on Yarn层面提到的所有问题,并为Spark跑在Kubernetes上提供Shuffle基础组件。 3. Remote Shuffle Service设计与实现 3.1 Remote Shuffle Service的背景 早在2...
百度DCE shuffle是较早在业内实践并大规模使用的remote shuffle service方案,它设计的初衷是为了解决几个问题,一是在离线混部,二是提高MR作业的稳定性和处理规模。百度内部的MR作业已经改造接入DCE shuffle并使用多年,现在Spark批处理作业也已经改造使用DCE shuffle做为其shuffle引擎。 Facebook Cosco Shuffle[2] Facebo...
Reduce 阶段在启动之前会有一个等待,让更多的 map 结果被 push 到 remote ESS,然后 Spark driver 会向所有 PushMergerLocations 的 ESS 发送一个 FinalizeShuffleMerge 请求,ESS 服务收到请求后,停止接收 pushed shuffle 数据,并持久化所有缓存数据到文件中,最后向 Driver 返回最终 merged shuffle blocks 信息。
public final ExecutorShuffleInfo executorInfo; // 文件路径 } 1. 2. 3. 4. 5. 因为ExternalShuffleService 是为同个主机上所有 Executor 服务的,而这台主机上可能同时运行多个 spark 程序,所以需要 appId 用来区分。execId 是用来区分 Executor 节点的。executorInfo 是用来指定数据存储的目录。
Remote Shuffle Service 的实现 整体设计 Spark RSS 架构包含三个角色:Master、Worker、Client。Master 和 Worker 构成服务端,Client 以不侵入的方式集成到 Spark ShuffleManager 里(RssShuffleManager 实现了 ShuffleManager 接口)。 Master 的主要职责是资源分配与状态管理。
因为趣头条的大数据业务目前全都部署在阿里云上,阿里云EMR团队和趣头条的大数据团队进行了深入技术共创,共同研发了Remote Shuffle Service(以下简称RSS),旨在解决Spark on Yarn层面提到的所有问题,并为Spark跑在Kubernetes上提供Shuffle基础组件。 3. Remote Shuffle Service设计与实现 ...
Spark 社区提供了 Remote Shuffle Service 的接口,各家公司可以自己实现自己的 RSS。所以,近两年在 Spark 平台的 RSS 技术方案如雨后春笋,纷纷公开亮相。 相关工作 我们先看一下各家的解决方案,目前公开资料和源码的方案主要有: Uber 的 RSS [5]:2020 年开源,底层存储基于本地磁盘,Shuffle Server 提供读写数据功...
Spark 社区提供了 Remote Shuffle Service 的接口,各家公司可以自己实现自己的 RSS。所以,近两年在 Spark 平台的 RSS 技术方案如雨后春笋,纷纷公开亮相。 相关工作 我们先看一下各家的解决方案,目前公开资料和源码的方案主要有: Uber 的 RSS [5]:2020 年开源,底层存储基于本地磁盘,Shuffle Server 提供读写数据功...
先看下面一组图表,出于降本增效、提高shuffle可用性/稳定性、存储架构分离等因素的考虑,各大厂、工业界纷纷开始RemoteShuffleService研发,shuffle过程的新的实现趋势,各厂方案遍地开花。 shuffle动作指的是需要把数据从某个地方搬到另一个地方,一般在大数据框架下大家优化的思路也是尽可能减少shuffle的动作,例如通过算子变化...