zoukankan      html  css  js  c++  java
  • spark-submit参数之excutor-memory

    https://blog.csdn.net/zhuiqiuuuu/article/details/86539385

    excutor-memory底层是如何分配的

    源码如下

    // 默认值,1024MB
    var executorMemory = 1024 
    
    // OverHead 比例参数,默认0.1
    val MEMORY_OVERHEAD_FACTOR = 0.10  
    
    val MEMORY_OVERHEAD_MIN = 384
    
    val executorMemoryOverhead = sparkConf.getInt("spark.yarn.executor.memoryOverhead",math.max((MEMORY_OVERHEAD_FACTOR * executorMemory).toInt, MEMORY_OVERHEAD_MIN))
    
    // 最终分配的executor 内存为 两部分的和
    val executorMem = args.executorMemory + executorMemoryOverhead
    

    excutor-memory分配6G实际得到7G为什么呢?

    max(6144*0.1,384) = 614
    6144MB+614MB=6758MB
    ceil(6758/1024)*1024 = 7168 = 7G
    

    规整因子

    规整化因子介绍
    为了易于管理资源和调度资源,Hadoop YARN内置了资源规整化算法,它规定了最小可申请资源量、最大可申请资源量和资源规整化因子,如果应用程序申请的资源量小于最小可申请资源量,则YARN会将其大小改为最小可申请量,也就是说,应用程序获得资源不会小于自己申请的资源,但也不一定相等;如果应用程序申请的资源量大于最大可申请资源量,则会抛出异常,无法申请成功;规整化因子是用来规整化应用程序资源的,应用程序申请的资源如果不是该因子的整数倍,则将被修改为最小的整数倍对应的值,公式为ceil(a/b)*b,其中a是应用程序申请的资源,b为规整化因子。

    比如,在yarn-site.xml中设置,相关参数如下:

    yarn.scheduler.minimum-allocation-mb:最小可申请内存量,默认是1024
    yarn.scheduler.minimum-allocation-vcores:最小可申请CPU数,默认是1
    yarn.scheduler.maximum-allocation-mb:最大可申请内存量,默认是8096
    yarn.scheduler.maximum-allocation-vcores:最大可申请CPU数,默认是4
    

    对于规整化因子,不同调度器不同,具体如下:
    FIFO和Capacity Scheduler,规整化因子等于最小可申请资源量,不可单独配置。
    Fair Scheduler:规整化因子通过参数yarn.scheduler.increment-allocation-mb和yarn.scheduler.increment-allocation-vcores设置,默认是1024和1。

  • 相关阅读:
    Linux的常用用法
    docker入门实践01
    airflow安装rest api插件发现airflow webserver服务不能启动的解决办法
    27.Spark中transformation的介绍
    1.Cloudera Manager安装
    win10系统不能ping通vmware虚假机解决办法
    在airflow的BashOperator中执行docker容器中的脚本容易忽略的问题
    AirFlow后台运行调度程序
    Airflow怎么删除系统自带的DAG任务
    airflow删除dag不在页面显示
  • 原文地址:https://www.cnblogs.com/dch-21/p/13942155.html
Copyright © 2011-2022 走看看