• 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。

  • 相关阅读:
    Monitor All SQL Queries in MySQL (alias mysql profiler)
    to config RBS/RBLOB in sharepoint
    Chapter 10 EF 6 Support
    分布式网站架构后续:zookeeper技术浅析
    js中的json对象详细介绍
    JS通用方法总结(一)
    combobox远程加载数据的总结和Json数据的小结
    iframe自适应方法
    简单理解Hibernate三种状态的概念及互相转化
    hibernate的save()和persit()之间的区别
  • 原文地址:https://www.cnblogs.com/dch-21/p/13942155.html
Copyright © 2020-2023  润新知