- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 视频嵌入链接 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
RSS 使用和性能展示
EMR Spark是运行在阿里云平台上的大数据处理解决方案。Spark on kubernetes时会面临shuffle的问题,针对相关问题,我们设计了shuffle读写分离的架构,称为Remote Shuffle Service,对现有的shuffle机制做了比较大的优化,解决了计算存储分离和混合架构下的shuffle稳定性和性能问题。本次直播将重点展开RSS的使用和性能展示。
枢木,阿里云开源大数据平台,高级开发工程师
展开查看详情
1 .RSS 使用和性能展示 吴雪扬(枢木) 阿里云 开源大数据平台 高级开发工程师
2 .目录 RSS 介绍 目录 RSS 使用 RSS 性能
3 .RSS 介绍
4 .Spark Shuffle • 产生 numMapper * numReducer 个 block • 顺序写、随机读 • 写时 Spill • 单副本,丢数据需 stage 重算
5 .EMR Remote Shuffle Service • 追加写、顺序读 • 无写时 Spill • 两副本;副本复制到内存后即完成 • 副本之间通过内网备份,无需公网带宽
6 .EMR Remote Shuffle Service
7 .容错 • Shuffle Write 以 batch 为基本单位 • Batch 头包含 16 个 Byte: • MapId • AttemptId • BatchId • Size • Driver 中纪录成功的 MapId 和 AttemptId • 读时根据 MapId 和 AttemptId 和 BatchId 进行过滤
8 .负载均衡 • Worker 在启动时,注册到 Master 中,注册需要包含 Worker 自身的 Slot 数量。 • Register Shuffle 时,由 executor 进行 Shuffle Writer 时发起 Request,注册到 EssMetaSystem,之 后由 Driver 向 Master 为每个 reduce 申请 slots。 • EssMetaSystem 向所有涉及到的 Worker 发送 Reserve Buffer 请求。 • EssMetaSystem 纪录返回到 Worker 和 Slot 之间的对应关系。 • 在发生 Revive 时,EssMetaSystem 直接根据保存到 Worker 进行 Slot 申请。
9 .RSS + AQE (coalesce partition) • RSS 可以直接适配 AQE 的 Coalesce Partition
10 .RSS + AQE (local shuffle read) • 正常 Join 参与 Join 的表都需要进行 shuffle • AQE 中 Local Shuffle Read 可以将参与 Join 的小表直接 Broadcast,但由于已经 执行了 Shuffle Write,所以需要读取 shuffle write 数据;即每个 reduce 直 接读取一个 map 数据文件作为新的 partition。 • RSS 适配时 AQE 的 Local Shuffle Read 时可以参考 Coalesce Partition。即需要 修改 Spark AQE 源码以支持。
11 .RSS + AQE (skew join) • Skew Join 时,Spark AQE 在 shuffle read 时读取部分 Map 中 的 partition。 • RSS 适配 AQE 时,reduce 根据 MapId 进行过滤。
12 .RSS 使用
13 .RSS 使用 spark-submit/spark-sql/spark-shell –-master [ yarn | spark:// | k8s:// ] \ --deploy-mode [ client | cluster ] \ --conf spark.shuffle.service.enabled=false \ --conf spark.dynamiacAllocation.enabled=false \ --conf spark.serializer=org.apache.spark.serializer.KryoSerializer \ --conf spark.sql.adaptive.skewJoin.enabled=false \ --conf spark.sql.adaptive.localShuffleReader.enabled=false \ --conf spark.shuffle.manager=org.apache.spark.shuffle.ess.EssShuffleManager \ --conf spark.ess.master.address=host:port
14 .RSS 性能
15 .RSS TeraSort Benchmark 备注说明:以10T Terasort为例,shuffle量压缩后大约5.6T。可以看出该量级的作业在 RSS场景下,由于shuffle read变为顺序读,性能会有大幅提升。
16 .RSS TPCDS Benchmark • 由于大shuffle任务能够充分利用顺序读 的优势,所以性能很好,对于中型的ETL 作业来说会有非常大的收益。除性能外, 由于解决了shuffle fetch失败带来的 stage重算,作业会非常稳定。 • 小shuffle(大约10几G级别)作业会因 为网络写的原因有部分性能降低,属于 预期之内。由于整体的运行时间本身就 很短,所以时间差很小。
17 .