GraphX的基于内存的随机播放和Spark Core的随机播放有什么区别

时间:2019-11-28 17:10:24

标签: apache-spark spark-graphx

从论文“ GraphX:分布式数据流框架中的图形处理” (Gonzalez等,2014)中,我了解到GraphX修改了Spark shuffle:

  

基于内存的随机播放:Spark的默认随机播放实现将临时数据具体化到磁盘。我们修改了混洗阶段,以在内存中实现地图输出,并使用超时来删除此临时数据。

(本文不再对此进行解释。)

此更改似乎旨在在高度迭代的图形处理算法的上下文中优化混洗。

此“基于内存的随机播放”是如何工作的,它与Spark Core的随机播放有何区别,还有什么优缺点:为什么它非常适合graphx用例而不适合其他Spark作业?

我无法直接从GraphX / Spark来源了解全局,也很难从那里找到信息。

除了理想的答案外,还欢迎提供带有来源链接的评论。

1 个答案:

答案 0 :(得分:1)

  

我无法直接从GraphX / Spark来源了解全局

因为它从未包含在主流发行版中。

早在开发第一个GraphX版本时,Spark便使用了基于哈希的混洗,效率很低。这是Spark工作的主要瓶颈之一,并且在开发替代洗牌策略方面进行了大量研究。

由于GraphX算法是迭代的和基于联接的,因此提高混洗速度是显而易见的途径。

从那时起,引入了可插拔的shuffle管理器,以及基于新排序的shuffle,最终证明它足够快,可以使基于散列的shuffle和正在进行的提供基于内存的通用shuffle的工作变得过时。