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

转载于:https://www.cnblogs.com/yesecangqiong/p/10126931.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值