• Spark优化之gc


    对于官方Programming Guides的GC优化一节做了阅读。

    在这里记录一下我的理解,可能记录的比较混乱没有条理:

    我理解其实GC优化的主要目的就是在你的任务执行中使用更少的内存,进行更少的gc回收,因为GC回收会使你的任务执行的更慢。 

    使用-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps可以在日志中观察你的程序执行过程中GC回收的情况。根据日志进行优化。例如你发现回收的过于频繁,那么就要看一下是不是你的程序和内存使用是否有问题。

    尽量多使用原生类型,而不要使用诸如 hashmap,linkedlist之类的复杂类型,因为这些更加占用内存,另外String也少用尽量使用数字和枚举类型

    spark.storage.memoryFraction参数来控制你executor内存中,用于缓存的比例;如果你的任务中缓存用的不多,或者GC回收频繁,甚至内存溢出,那么可以考虑调整这个参数的比例,减少缓存内存而去增加任务内存的使用。

    其实这与java的gc优化是一脉相承的,gc优化也没有什么固定的套路,这和你的内存和程序是相关的。

    我需要对于java的gc进行进一步的学习,这样才可以在spark中更好的进行优化。

  • 相关阅读:
    HTTPS
    RPC
    2017.4.19上午
    2017.4.18下午
    2017.4.18上午
    2017.4.17下午
    2017.4.17上午
    2017.4.14下午
    2017.4.14上午
    2017.4.13下午
  • 原文地址:https://www.cnblogs.com/hark0623/p/4516225.html
Copyright © 2020-2023  润新知