第9章 Spark 2.1.0新一代Tungsten优化引擎彻底解析 1.1 概述
Spark作为一个一体化多元化的大数据处理通用平台,性能一直是其根本性的追求之一,Spark基于内存迭代(部分基于磁盘迭代)的模型极大的满足了人们对分布式系统处理性能的渴望,Spark是采用Scala+ Java语言编写的,所以运行在JVM平台。当然JVM是一个绝对伟大的平台,因为JVM让整个离散的主机融为了一体(网络即OS),但是JVM的死穴GC反过来限制了Spark(也就是说平台限制了Spark),所以Tungsten聚焦于CPU和Memory使用,以达到对分布式硬件潜能的终极压榨!
对Memory的使用,Tungsten使用了Off-Heap,也就是在JVM之外的内存空间(这就好像C语言对内存的分配、使用和销毁),此时Spark实现了自己的独立的内存管理,就避免了JVM的GC引发的性能问题,其实也避免了序列化和反序列化。
对Memory的管理,Tungsten提出了Cache-awarecomputation,也就是说使用对缓存友好的算法和数据结构来完成数据的存储和复用;
对CPU的使用,Tungsten提出了CodeGeneration,其首先在Spark SQL使用,通过Tungsten要把该功能普及到Spark的所有功能中;(这里的CG就类似于Android的art模式)。
JAVA操作的数据一般是自己的对象,但像C,C&