Spark性能优化第八季
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内幕
1、写数据在内存足够大的情况下是写到Page里面,在Page中有一条条的Record,如果内存不够的话会Spill到磁盘上
2、如何看内存是否足够呢?两方面
a)系统默认情况下给ShuffleMapTask最大准备了多少内存空间,默认情况下是ExecutorHeapMemory * 0.8(safety fraction) * 0.2(memory fraction)
spark.shuffle.memoryFraction = 0.2 spark.shuffle.safetyFraction = 0.8
b)另外一方面是和Task处理的Partition大小紧密相关;
3、在Tungsten下获取数据的类叫做BlockStoreShuffleReader,其底层其实是Page;