开源大数据社区 & 阿里云 EMR 系列直播 第九期
主题:RSS 使用和性能展示
讲师:枢木,开源大数据平台高级开发工程师
内容框架:
RSS 介绍
RSS 使用
RSS 性能
直播回放:扫描文章底部二维码加入钉群观看回放
1
RSS 介绍
Spark Shuffle
产生 numMapper* numReducer 个 block
顺序写、随机读
写时 Spill
单副本,丢数据需 stage 重算
EMR Remote Shuffle Service
追加写、顺序读
无写时 Spill
两副本;副本复制到内存后即完成
副本之间通过内网备份,无需公网带宽
EMR Remote Shuffle Service 整体流程
容错
Shuffle Write 以 batch 为基本单位
Batch 头包含 16 个 Byte:
• MapId
• AttemptId
• BatchId
• Size
Driver 中纪录成功的 MapId 和 AttemptId
读时根据 MapId 和 AttemptId 和 BatchId 进行过滤
负载均衡
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 申请。
RSS + AQE (coalesce partition)
RSS可以直接适配 AQE 的 Coalesce Partition
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 源码以支持。
RSS + AQE (skew join)
Skew Join 时,Spark AQE 在 shuffle read 时读取部分 Map 中的 partition。
RSS 适配 AQE 时,reduce 根据 MapId 进行过滤。
2
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
具体实操演示可点击文章下方阅读原文观看视频回放
2
RSS 使用
RSS TeraSort Benchmark
备注说明:以10T Terasort 为例,shuffle 量压缩后大约5.6T。可以看出该量级的作业在 RSS 场景下,由于 shuffle read 变为顺序读,性能会有大幅提升。
RSS TPCDS Benchmark
由于大 shuffle 任务能够充分利用顺序读的优势,所以性能很好,对于中型的ETL作业来说会有非常大的收益。除性能外,由于解决了 shuffle fetch 失败带来的 stage 重算,作业会非常稳定。
小 shuffle(大约10几G级别)作业会因为网络写的原因有部分性能降低,属于预期之内。由于整体的运行时间本身就很短,所以时间差很小。
对应产品介绍,可以直接点击文章下方阅读原文观看视频,也可以扫描文章底部钉钉群二维码,进群观看直播回放哦!
END
阿里巴巴开源大数据技术团队成立 Apache Spark 中国技术社区,定期推送精彩案例,技术专家直播,问答区 Spark 技术同学在线提问答疑,只为营造纯粹的 Spark 氛围,欢迎钉钉扫码加入!
????戳阅读原文,快速回看直播视频~