Tungsten大幅度提升Spark性能

Tungsten项目能够大幅度提高Spark的内存和CPU使用效率,使其性能接近于硬件的极限,主要体现以下几点:
1.内存管理和二进制处理,充分利用应用程序语义明确管理内存,消除JVM对象模型和垃圾收集机制的开销。
2.缓存敏感型计算,算法和数据结构都是利用内存层次结构。
3.代码生成,使用代码生成器充分利用现代编译器和CPU。

注重CPU的效率是来自于Spark的工作瓶颈主要是在CPU和内存,而不是IO和网络通讯,有关研究报告见:Spark只比Hadoop快19% ?

为什么CPU是新的瓶颈?有许多原因,一个原因是硬件配置提供了大量的聚合性的IO贷款,比如10Gbps网络连接,而内存通过SSD或HDD阵列实现,序列化和hashing(都是CPU敏感的)已经成为Spark关键瓶颈,而不是底层硬件的原生网络吞吐量。

详细优化细节见:
Project Tungsten: Bringing Spark Closer to Bare Me