如何理解spark on yarn内存分配,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
创新互联主要从事网站设计制作、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务老边,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
- spark driver和executor的on-heap内存是如何配置的。
- spark driver和excutor的off-heap内存是如何配置的。
默认值1g。driver进程的on-heap内存,driver进程就是sparkcontext初始化所在的进程。在client模式下driver的堆内存,不要通过SparkConf设置,要用--driver-memory命令替换,或者在默认的配置文件里配置。2). spark.driver.memoryOverhead默认值是max(DriverMemory*0.1,384m)。在YARN或者kubernetes模式的cluster模式下,driver端申请的off-heap内存的总量,通常是driver堆内存的6%-10%。3). spark.executor.memory4). spark.executor.memoryOverhead默认值max(executor*0.1,384).单个executor申请的off-heap内存的总量。该参数仅仅支持在yarn或者kubernetes上使用,通常可以是executor内存的0.06-0.1。默认值512m,Appmaster在client模式下的内存。假如是Cluster模式下会使用spark.driver.memory来代替。yarn调度container有个最小粒度,资源调度的时候必须是其整数倍,最小粒度的配置参数是
yarn.scheduler.minimum-allocation-mb
浪尖这里的案例是40个executor,单个executor内存申请的时候是20GB,driver是20GB,yarn的web ui截图如下:整个APP申请的总内存是 923648MB=902GB。spark app申请的单个 Executor内存,从1.3和1.4可以得知是:spark on yarn 的cluster模式下Driver端与appmaster是在一起的,所以appmaster内存参数无效,因此driver和executor总内存由1.1和1.2可得:上面计算的案例中,由于浪院长这里的yarn集群内存调度的最小粒度是1GB貌似,在上面的计算中没有参与度。此时假设是10个executor,每个executor的内存是19GB,driver的内存依然是19GB。换算成GB就是236544MB/1024 = 231GB
Yarn的最小调度单元是1GB,所以单个executor调度的时候内存是21GB。10个executor的总内存就是 21 *10 = 210GB经计算可以得到driver的内存是19*1.1GB= 21GB那么计算所得的spark app内存和 yarn ui上所得内存一致。没有开启动态executor申请与释放,假设开启了,要视情况计算。看完上述内容,你们掌握如何理解spark on yarn内存分配的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
分享题目:如何理解sparkonyarn内存分配
分享链接:
http://kswsj.cn/article/ppejso.html