进入大数据领域后,零碎的接触很多东西,很多都是当时很清楚,过了一段时间就忘记了,所以整理一篇博客记录下:
先上一个看到比较好的博客,有时间在把自己的总结写下来:https://www.cnblogs.com/dreamfly2016/p/5720180.html
一.Spark 的内存划分,以spark 1.6 为例:
假设一个excutor 设置内存为10G:
1.安全空间(safe)为:10G*0.10=1G,也就是说安全空间占比10%,此部分空间是为了避免内存溢出设置的安全措施,设置参数
为:spark.storage.safetyFraction
2.缓存空间(Storage):10G*0.9*0.6=5.4G,缓存空间就是总内存减去安全空间后,剩余空间的百分之六十。设置
为: spark.executor.memory x spark.storage.safetyFraction x spark.storage.memoryFraction,storage空间就是spark加载缓存数据的地方,所以他的大小就决定了你能缓存到内存处理多少数据
3.反序列化空间(Unroll):5.4G*0.2=1.08G ,Unroll 空间就是Storage空间的百分之二十,专门用来缓存序列化数据,进行反序列化,该
操作优先级较高,可能会挤出其它缓存。设置参数为spark.storage.unrollFraction
4.shuffer空间:10G