Tungsten 计划旨在「Bringing Apache Spark closer to Bare Metal」,通过内存管理、缓存感知计算、代码生成三大支柱,消除 JVM 开销,充分榨取 CPU、内存、IO、网络硬件性能。
| 支柱 | 核心技术 | 性能提升 | 适用场景 |
|---|---|---|---|
| 1. Memory Management & Binary Processing | sun.misc.Unsafe 管理堆内/堆外内存,绕过 JVM GC | 聚合吞吐 100 万行/秒/线程,HashMap 性能 2 倍于 java.util.HashMap | 大规模聚合、Join、Shuffle |
| 2. Cache-aware Computation | 算法与数据结构适配 CPU L1/L2/L3 缓存层级 | 排序性能 3 倍提升 | Sort、Sort-Merge Join、高基数聚合 |
| 3. Code Generation | 从 Record-at-a-time → Vectorized 表达式求值,利用现代编译器优化 | Shuffle 写入 800 万行/秒,较 Kryo 提升 2 倍 | 表达式计算、投影、过滤、Shuffle 序列化 |
allocateMemory/freeMemory),避免 GC 停顿unsafe-heap 与 unsafe-offheap 两种模式UnsafeExternalSorter 源码org.apache.spark.sql.execution.UnsafeExternalSorter 理解缓存感知排序org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator 代码生成逻辑