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

  • 相关阅读:
    光棍节奉献10款chart插件 节日快乐.
    平安夜分享2款下拉菜单(CSS版本和JQuery版本)
    MVC 中T4扫盲贴
    解析JQuery 的Bind()事件
    Null在从数据库读取的时候的一点点小阴谋
    JQuery 动画效果集锦
    VS2010支持的6款UML简介
    T4系列文章之2:T4工具简介、调试以及T4运行原理
    既然结构也可以继承接口
    css float 之 clear
  • 原文地址:https://www.cnblogs.com/yesecangqiong/p/10126931.html
Copyright © 2011-2022 走看看