Spark内存设置

1.常规设置

    在我另一篇文章中也有提到,即常规设置:

        (假设物理机内存大小为32G)

        -Xms    物理内存的1/64    -Xms512m

        -Xmx    物理内存的1/4    -Xmx8G        

        -XX:PermSize    物理内存的1/64    -XX:PermSize=512m

        -XX:MaxPermSize    物理内存的1/4 -XX:MaxPermSize=8G

2.出现内存溢出时

    1)首先调整eclipse或者IDEA配置文件内的内存大小。

    2)其次调整jvm内存大小设置,jvm内存大小设置应同配置文件设置。

    3)分页内存设置(一般不需要)

3.判断和设置

    运行Spark时会显示日志消息,如下:

18/06/19 12:00:00 INFO MemoryStore: MemoryStore started with capacity 4.1 GB

    判断方法就是根据Spark产生的日志信息:Spark可用内存即为4.1G,这个参数的设置仅与-Xmx大小有关,大体即为-Xmx值乘以默认参数0.6来推算。而-Xms在我另一文章中提到过,是jvm的GC内存大小,达到这个值的时候,jvm才开始进行回收。

    设置大小应根据参与运算数据内存的大小除以0.6来设置,根据官方文档中所提到的spark.memory.fraction默认为0.6来推算相应数据需要设置的内存大小,如运算数据为8G,则应设置为14G左右。

4.补充

    磁盘空间不足问题:

    由于Spark为减少IO开销而将job中间输出结果保存在了本机内存中,因此设置Spark缓存目录,

    在设置SparkConf时添加参数.set("spark.local.dir","E:\SparkTemp"),即设置Spark本地缓存目录即可。

猜你喜欢

转载自blog.csdn.net/fortuna_i/article/details/80730587