SPARK+AI SUMMIT 2020中文精华版线上峰会将会带领大家一起回顾2020年的SPARK又产生了怎样的最佳实践,技术上取得了哪些突破,以及周边的生态发展。本文中,来自Databricks开源项目组的软件工程师吴一介绍了利用Flash闪存优化在Cosco基础上的Spark Shuffle。原标题:Flash for Spark Shuffle with Cosco
原视频链接:https://developer.aliyun.com/live/43189?spm=a2c6h.12873639.0.0.4eca1a518KlgJ5
活动链接:SPARK中文峰会议题(三)|听听砖厂和领英工程师说的吧
Cosco是Facebook开发的一种服务,主要用于优化Spark Shuffle的性能,下文主要介绍用Flash闪存(以下简称:闪存)进一步优化Cosco。
一、Cosco
Cosco作为一种服务主要优化Spark Shuffle的性能,其优势有:
相较于原生的Spark Shuffle,能够提升大约3倍的I/O性能,能够有效降低磁盘的读写时间;
引入闪存以后Cosco能够以更少的资源支撑更多的场景;
引入闪存之后有更大的可能降低Query的延迟;
利用闪存优化Cosco的过程中用到的技术也可以用于Cosco之外的领域。
(一)Cosco产生背景
在Spark Shuffle中有Map Task和Reduce Task两种Task,每个Map Task都会生成Map Output Files,然后根据Partition进行分组,决定将文件写入本地磁盘还是分布式文件系统中;所有Map Task执行完毕之后,Reduce Task就会去读取Map Output Files中某个分区的数据,将其合并成某个大的Partition,在必要的时候还会进行排序。在上面的过程中,主要会存在两个与I/O性能相关的问题: