Spark性能優(yōu)化第八季
1、“鎢絲計劃”Shuffle實例
2、“鎢絲計劃”下的Shuffle解密
./spark-sql --master spark://Master:7077
一、使用Tungsten功能
1、如果想讓你的程序使用Tungsten的功能,可以配置:
spark.shuffle.manager = tungsten-sort
2、DataFrame中自動開啟了Tungsten功能;
二、Tungsten-sort based shuffle writer內(nèi)幕
1、寫數(shù)據(jù)在內(nèi)存足夠大的情況下是寫到Page里面,在Page中有一條條的Record,如果內(nèi)存不夠的話會Spill到磁盤上
2、如何看內(nèi)存是否足夠呢?兩方面
a)系統(tǒng)默認情況下給ShuffleMapTask最大準備了多少內(nèi)存空間,默認情況下是ExecutorHeapMemory * 0.8(safety fraction) * 0.2(memory fraction)
spark.shuffle.memoryFraction = 0.2 spark.shuffle.safetyFraction = 0.8
b)另外一方面是和Task處理的Partition大小緊密相關(guān);
3、在Tungsten下獲取數(shù)據(jù)的類叫做BlockStoreShuffleReader,其底層其實是Page;