Spark tungsten 項目閱讀筆記html
Spark tungsten 項目的宣言就是:Bringing Apache Spark closer Bare Metal。 個人理解就是不要讓硬件成爲Spark性能的瓶頸,無限充分利用硬件資源(CPU,內存,IO,網絡)。算法
tungsten主要有3大動做。緩存
1. Memory Mangement and Bianary processing:利用應用程序的語義去管理內存,減小JVM的開銷和垃圾回收。網絡
個人理解是利用sun.msic.UnSafe 去管理內存,不使用JVM的垃圾回收機制。在1.4 和 1.5中可使用此特性。unsafe-heap 和 unsafe-offheap 的hashmap能夠處理100萬/s/線程聚合操做。相比Java.util.Hasp 2倍的性能。數據結構
2. Cache-aware Coputation:algorithm and data structure to exploit memory hierarchy。(算法和大數據結構利用多級內存)性能
利用CPU的一級、二級、三級緩存來提升排序的cache命中率(如何提升沒看明白)。相比以前版本排序提升3倍。對排序、sort merger、高cardinality聚合性能有幫助測試
3. Code-genaration:using code generation to exploit modern compilers and CPUs。(代碼生成利用modern compiles和cpu)大數據
code generation從record-at-a-time 表達式評估 到 vectorized 表達式評估。能夠一次處理多條數據。shuffle的性能相比kryo版本提升兩倍(shuffle8百萬的測試場景)spa
參考文獻:線程
https://databricks.com/blog/2015/04/28/project-tungsten-bringing-spark-closer-to-bare-metal.html
http://stackoverflow.com/questions/37505638/understanding-spark-physical-plan