zoukankan      html  css  js  c++  java
  • spark on yarn内存和CPU分配

    以spark1.6为例,使用内存和CPU的无外乎三个:appMaster、driver、executor,下面分别分析spark on yarn的client与cluster模式下的内存和CPU分配
    一、vcores
    1、driver核数:
      client模式:无
      cluster模式:spark.driver.cores=1(默认)
    2、AppMaster核数:
      client模式:spark.yarn.am.cores=1(默认)
      cluster模式:spark.driver.cores=1(默认)
    3、executor核数:
      spark.executor.cores=1(默认)
    4、executor内每个task使用的核数:
      spark.task.cpus=1(默认)
    5、每个executor内能够并行运行的task数:
      spark.executor.cores / spark.task.cpus
    6、yarn上启动executor的个数:
      SPARK_EXECUTOR_INSTANCES/spark.executor.instances=2(默认)
    7、要向yarn申请的总的vcores = executor核数 * executor个数 + AppMaster核数,
      具体yarn给多少颗vcores,类似于mapreduce on yarn的情况,参考文章:
      https://www.cnblogs.com/yesecangqiong/p/6274427.html
    注意---------------------------
      1、:spark.driver.cores只能在cluster模式下使用
      2、spark.executor.instances与spark.dynamicAllocation.enabled不能共同使用,如果两个都做了配置,spark.executor.instances有效
      3、要向使spark.task.cpus>1时起作用,还应该保证yarn的配置文件"capacity-scheduler.xml"中的配置选项"yarn.scheduler.capacity.resource-calculator"
        的值为:"org.apache.hadoop.yarn.util.resource.DominantResourceCalculator",而不应该是默认的"org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator"
        可以参考文章:https://www.cnblogs.com/yesecangqiong/p/10125333.html

    二、内存
    1、driver需要申请的内存 = 基本内存 + 额外内存
      基本内存:
        spark.driver.memory=1g(默认)
      额外内存:
        1、有参数配置则直接等于参数配置
          spark.yarn.driver.memoryOverhead
        2、无参数配置(即默认)
          max(driver基本内存 * 0.1,384M)
    2、appMster需要申请的内存 = 基本内存 + 额外内存(memoryOverhead)
      基本内存:
        client模式:spark.yarn.am.memory=512MB(默认)
        cluster模式:appMaster与driver运行于同一个JVM(yarn上的同一container),决定于:spark.driver.memory=1g(默认)
      额外内存:
        1、有参数配置则直接等于参数配置
          client模式:spark.yarn.am.memoryOverhead
          cluster模式:spark.yarn.driver.memoryOverhead
        2、没有配置相应参数(即默认):
          yarn-client模式:max(AppMaster基本内存 * 0.1,384M)
          yarn-cluster模式:max(Driver基本内存 * 0.1,384M)
    3、executor需要申请的内存 = 基本内存 + 额外内存
      基本内存:
        spark.executor.memory=1g(默认)
      额外内存:
        1、有参数配置则直接等于参数配置
          spark.yarn.executor.memoryOverhead
        2、无参数配置(即默认)
          max(executor基本内存 * 0.1,384M)
    4、要向yarn申请的总的内存 = executor内存 * executor个数 + AppMaster内存 ,
      具体yarn给多少内存,类似于mapreduce on yarn的情况,参考文章:
      https://www.cnblogs.com/yesecangqiong/p/6274427.html
    注意--------------------------------:
      在client模式下,spark.driver.memory不能由代码中的SparkConf配置指定,只能通过配置文件或运行脚本中指定

    三、参考官方文档:
      http://spark.apache.org/docs/1.6.0/running-on-yarn.html#configuration
      http://spark.apache.org/docs/1.6.0/configuration.html

  • 相关阅读:
    Educational Codeforces Round 30 B【前缀和+思维/经典原题】
    Educational Codeforces Round 30 A[水题/数组排序]
    洛谷 P2415 集合求和【数学公式/模拟】
    洛谷 P2689 东南西北【模拟/搜索】
    洛谷 P1012 拼数 [字符串]
    codeforces 869C The Intriguing Obsession【组合数学+dp+第二类斯特林公式】
    洛谷 P3927 SAC E#1
    洛谷P3929 SAC E#1
    洛谷P3926 SAC E#1
    codeforces 868B The Eternal Immortality【暴力+trick】
  • 原文地址:https://www.cnblogs.com/yesecangqiong/p/10126931.html
Copyright © 2011-2022 走看看