Spark Tungsten-sort Based Shuffle 分析
前言 看这篇文章前,建议你先简单看看 Spark Sort Based Shuffle内存分析。 Tungsten 中文是钨丝的意思。 Tungsten Project 是 Databricks 公司提出的对Spark优化内存和CPU使用的计划,该计划初期似乎对Spark SQL优化的最多。不过部分RDD API 还有Shuffle也因此受益。 简述 Tungsten-sort优化点主要在三个方面: 直接在serialized binary data上sort而不是java objects,减少了memory的开销和GC的overhead。 提供cache-efficient sorter,使用一个8bytes的指针,把排序转化成了一个指针数组的排序。 spill的merge过程也无需反序列化即可完成 这些优化的实现导致引入了一个新的内存管理模型,类似OS的Page,对应的实际数据结构为MemoryBlock,支持off-heap 以及 in-heap 两种模式。为了能够对Record 在这些MemoryBlock进行定位,引入了Pointer(指针)的概念。 如果你还记得Sort B...