美文网首页
Cosco: an efficient facebook-sca

Cosco: an efficient facebook-sca

作者: 分裂四人组 | 来源:发表于2019-11-17 23:33 被阅读0次

    Facebook的Cosco Shuffle算法类似社区当前的https://issues.apache.org/jira/browse/SPARK-25299
    思路(remote shuffle service),但SPARK-25299只是针对SortShuffleManager算法实现的,Cosco Shuffle算法是一种完全Shuffle分离的实现( fully disaggregated shuffle implementations)。

    当前facebook的同学也正在尝试着想将这部分的实现合入到社区中。

    背景及现状分析

    • 在存储、计算分离的架构实现中,磁盘存储很容易成为性能的瓶颈:
      • Small IO size: 小文件问题导致需要多次seek(IO),进而影响到吞吐量;
    • 而为了改进该问题,有两种途径:
      • 增大交互IO大小以提升整体吞吐量: 优化shuffle算法避免小文件读写;
      • Read/Write更少的数据减少吞吐需求:减少读写放大;

    下图就展示了读写IO大小对整体吞吐的影响:


    屏幕快照 2019-11-17 23.15.29.png

    Cosco Shuffle的实现

    • Mappers: 每个partition共享一个Write-Ahead Buffer(根据需求是否排序,这个是在remote shuffle实现的);
    • Reducers: 顺序读取shuffle数据;

    这样带来的好处有:

    • 增大IO文件大小: 从IO平均大小200KB->2.5MB;
    • 解决写放大问题: 3x -> 1.2x;
    屏幕快照 2019-11-17 23.24.42.png

    方案设计

    • 在mappers/reduers之间增加了cosco中间服务(类似于remote shuffle service)的实现;
    • Cosco is based on the idea of partial in-memory aggregation across a shared pool of distributed memory. This provides vastly improved efficiency in disk usage compared to Spark’s built-in shuffle.;
    • 同时Cosco是内存设计的,极大地提供了shuffle性能;
    • 而在shuffle数据的写入时决定是否排序,减少在reduce的时候排序(依赖reduce的迭代器的优化,基于归并排序的方法),来减少读写放大;
    屏幕快照 2019-11-17 23.28.49.png

    参考

    相关文章

      网友评论

          本文标题:Cosco: an efficient facebook-sca

          本文链接:https://www.haomeiwen.com/subject/ktimictx.html