• 计算Spark StorageMemory Heap内存


    计算Spark StorageMemory Heap内存

    tag: Spark, Spark Memory, Spark Storage Memory

    2021-04-23 21:26:25 星期五
    version: spark-2.4.5
    Executor 进程 org.apache.spark.executor.CoarseGrainedExecutorBackend
    Driver 进程 org.apache.spark.deploy.SparkSubmit

    CMS GC型

    1. 找到Jvm进程 pid
      Executor/Driver process 通过端口找: netstat -tunpl | grep $port
      Driver process 通过Jar包找: ps -ef | grep jarFileName
      Executor/Driver process 通过applicationId查找: ps -ef | grep ${application-id}

    2. 查询Executor内存

    jmap -heap $pid
    # 此处为计算方便将Executor的Xms设为最大值2048m 并设置关闭OffHeapMemory
    

    结果:

    Attaching to process ID 59755, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 25.77-b03
    
    using thread-local object allocation.
    Parallel GC with 53 thread(s)
    
    Heap Configuration:
       MinHeapFreeRatio         = 0
       MaxHeapFreeRatio         = 100
       MaxHeapSize              = 2147483648 (2048.0MB)
       NewSize                  = 715653120 (682.5MB)
       MaxNewSize               = 715653120 (682.5MB)
       OldSize                  = 1431830528 (1365.5MB)
       NewRatio                 = 2
       SurvivorRatio            = 8
       MetaspaceSize            = 21807104 (20.796875MB)
       CompressedClassSpaceSize = 1073741824 (1024.0MB)
       MaxMetaspaceSize         = 17592186044415 MB
       G1HeapRegionSize         = 0 (0.0MB)
    
    Heap Usage:
    PS Young Generation
    Eden Space:
       capacity = 537395200 (512.5MB)
       used     = 142312432 (135.71971130371094MB)
       free     = 395082768 (376.78028869628906MB)
       26.481894888528963% used
    From Space:
       capacity = 89128960 (85.0MB)
       used     = 89115992 (84.98763275146484MB)
       free     = 12968 (0.01236724853515625MB)
       99.98545029584099% used
    To Space:
       capacity = 89128960 (85.0MB)
       used     = 0 (0.0MB)
       free     = 89128960 (85.0MB)
       0.0% used
    PS Old Generation
       capacity = 1431830528 (1365.5MB)
       used     = 163379752 (155.81107330322266MB)
       free     = 1268450776 (1209.6889266967773MB)
       11.41055095592989% used
    
    17279 interned Strings occupying 1729944 bytes.
    

    根据JVM计算出Spark Storage Memory 为
    (Eden + From + PS Old)
    => ((537395200 + 89128960+ 1431830528 -300 * 1024 * 1024)) * 0.6
    = 1046269132.8B
    向下取整得 1046269132B

    1. 获取Spark 应用的Storage Memory(因为ui界面Storage Memory是 按照 1KB = 1000B计算所以有差异)
    curl http://appDriverHost:4040/api/v1/applications/app-id/allexecutors | grep maxMemory
    
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
      0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
      "maxMemory" : 1046269132,  #Executor
      ...
    

    1046269132B 即是Spark ui界面上的 Storage Memory(该值是最大值, 即JVM申请全部内存的情况下的内存量)


    G1 GC型

    1. ...

    2.  jmap -heap $pid
      

    结果:

    Attaching to process ID 174736, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 25.77-b03
    
    using thread-local object allocation.
    Garbage-First (G1) GC with 8 thread(s)
    
    Heap Configuration:
       MinHeapFreeRatio         = 40
       MaxHeapFreeRatio         = 70
       MaxHeapSize              = 8589934592 (8192.0MB)
       NewSize                  = 1363144 (1.2999954223632812MB)
       MaxNewSize               = 5152702464 (4914.0MB)
       OldSize                  = 5452592 (5.1999969482421875MB)
       NewRatio                 = 2
       SurvivorRatio            = 8
       MetaspaceSize            = 21807104 (20.796875MB)
       CompressedClassSpaceSize = 1073741824 (1024.0MB)
       MaxMetaspaceSize         = 17592186044415 MB
       G1HeapRegionSize         = 2097152 (2.0MB)
    
    Heap Usage:
    G1 Heap:
       regions  = 4096
       capacity = 8589934592 (8192.0MB)
       used     = 3097300200 (2953.8156509399414MB)
       free     = 5492634392 (5238.184349060059MB)
       36.05731995776296% used
    G1 Young Generation:
    Eden Space:
       regions  = 815
       capacity = 3472883712 (3312.0MB)
       used     = 1709178880 (1630.0MB)
       free     = 1763704832 (1682.0MB)
       49.21497584541063% used
    Survivor Space:
       regions  = 31
       capacity = 65011712 (62.0MB)
       used     = 65011712 (62.0MB)
       free     = 0 (0.0MB)
       100.0% used
    G1 Old Generation:
       regions  = 694
       capacity = 2078277632 (1982.0MB)
       used     = 1323109608 (1261.8156509399414MB)
       free     = 755168024 (720.1843490600586MB)
       63.663756354184734% used
    
    26551 interned Strings occupying 2726760 bytes.
    

    根据JVM计算出Spark Storage Memory 为
    (Eden + From + PS Old)
    => (8589934592 -300 *1024 *1024) * 0.6
    = 4965217075.2B
    向下取整得 4965217075B

    1. 获取Spark 应用的Storage Memory
    curl http://hadoop-master:4040/api/v1/applications/app-20210423171912-0326/allexecutors | grep maxMemory
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100  6662  100  6662    0     0   667k      0 --:--:-- --:--:-- --:--:--  722k
      "maxMemory" : 4965217075, # Executor
      "maxMemory" : 455501414,  # Driver
    
    

    4965217075B 即是Spark ui界面上的 Storage Memory(该值是最大值, 即JVM申请全部内存的情况下的内存量)

  • 相关阅读:
    Mysql(11)_Mysql权限与安全
    Mysql(10)_存储过程与流程控制
    Java(43)_AWT事件处理挂关闭生效
    6.实现合同测试用例
    6.测试库优化
    5.案例回顾及编写测试用例
    4.测试案例实现代码库与测试用例V2.0
    3.测试案例实现代码库与测试用例
    markdown语法学习
    1.faker批量随机造数据
  • 原文地址:https://www.cnblogs.com/chinashenkai/p/14695593.html
Copyright © 2020-2023  润新知