—2023— Spark/Flink+Celeborn:更快,更稳,更弹性 演讲人:一锤—阿里云 背景性能稳定弹性 背景 传统Shuffle的问题 传统Shuffle的缺陷 •依赖大容量本地盘/云盘 •IO放大 •高网络连接 •磁盘随机读 •单副本 限制 •不够高效 •不够稳定 •不够弹性 ApacheCeleborn(Incubating) Celeborn:大数据引擎统一中间数据服务 •引擎无关 •Shuffle+Spilleddata https://github.com/apache/incubator-celeborn •700+Commits •33Contributors,7Committers(3in-coming) •370+Stars 性能 •存算分离 •写放大 •磁盘随机小IO •网络高连接小IO 核心设计 PushShuffle+Partition数据聚合Partition切分 Partition范围读 支持SparkAQE Partition合并 JoinStrategy切换SkewJoin优化 Map范围读 1 2 Split切分SortOnRead RangeRead 3 列式Shuffle •行列转换行列转换:(Int,String,Decimal) •代码生成•解释执行 •代码生成 •ShuffleSize缩减40%,行列转换开销低于5% 多层存储 •内存/本地盘/OSS(HDFS) •可任选1/2/3层配置 •让数据尽可能存在快存储 稳定 原地快速升级 •向前兼容 •优雅重启 流控 参考TCP的拥塞控制 •慢启动 •拥塞避免 •拥塞检测 其他实现:CreditBased •FlinkShuffleRead 负载均衡 •隔离坏盘 •尽量分配给快盘/大盘 磁盘监控 •坏盘 •刷盘速率 •未来用量 弹性 SparkonK8S 开源方案:spark.dynamicAllocation.shuffleTracking.enabled=true限制:几乎无法释放pod Evaluation 典型场景 完全混部 •提升性能&稳定性 Celeborn独立部署 •提升性能&稳定性 •源数据和Shuffle数据分离 •部分弹性 •提升性能&稳定性 •计算,数据,临时数据分离 •完全弹性 存算分离 超大作业 •混部场景:大作业稳定性&性能显著提升 •1000+CelebornWorker •压缩后4PBShuffleData 存算分离 •存算分离场景 •100台CelebornWorker •数万pods,极致弹性 •性能和稳定性显著提升 TPCDS •3TTPCDS20%性能提升 感谢您的观看 演讲人:一锤-阿里云