美文网首页
Yarn 任务最大并行数量

Yarn 任务最大并行数量

作者: IT_小白 | 来源:发表于2019-07-17 09:29 被阅读0次

问题

有大量资源的情况下提交的spark任务一直处于Pending状态,无法获取资源并运行。

Spark On Yarn

对spark on yarn研究比较多的朋友都应该发现过你明明给executor申请了1GB内存,结果发现该executor占用了yarn的2GB内存。对于spark的driver和executor在申请内存的时候有个计算公式:

spark.yarn.am.memoryOverhead 
除了指定的申请资源外额外申请(yarn-client模式):
AM memory * 0.10, with minimum of 384
spark.driver.memoryOverhead 
除了指定的申请资源外,额外申请:
driverMemory * 0.10, with minimum of 384
spark.executor.memoryOverhead 
除了指定的申请资源外,额外申请:
executorMemory * 0.10, with minimum of 384

由于1GB*0.10才100MB,所以会是1GB+384MB<2GB,不符合预期。实际上这个还依赖于yarn的内存调度粒度。resourcemanager的参数

最小值
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
最大值
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>20480</value>
</property>

默认yarn的调度最小单元就是1GB,所以结果就是使你原本申请1GB(+额外内存)的内存变为了2GB。

Yarn为了方便控制任务并行总数,提供了一个参数配置

配置文件:hadoop-2.7.4/etc/hadoop/capacity-scheduler.xml
<property>
<name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
<value>0.1</value>
<description> Maximum percent of resources in the cluster which can be used to run application masters i.e. controls number of concurrent running applications. </description>
</property>

参数含义就是所有AM占用的总内存数要小于yarn所管理总内存的一定比例,默认是0.1。
也即是yarn所能同时运行的任务数受限于该参数和单个AM的内存。

举个例子

集群400GB内存,提交了10个任务后就不能继续提交任务了,
资源还剩余300GB,CPU也很充足,完全满足新任务的资源,为什么提交的新任务一直处于Pending状态?

400GB * 0.1 = 40GB。

配置的yarn的内存调度最小单元是4GB,虽然申请的任务AM每个都是1GB,
但是由于调度单位是4GB,所以在这里实际内存就是4GB,刚好10个任务40GB,也就不能提交第11个任务了。

所以需要将调度内存调到默认值1GB,其实一般情况下没必要调整,然后将AM总内存占比提高,比如1,即可。

原文:https://blog.csdn.net/rlnLo2pNEfx9c/article/details/89324824

相关文章

  • Yarn 任务最大并行数量

    问题 Spark On Yarn 对spark on yarn研究比较多的朋友都应该发现过你明明给executor...

  • 《Spark快速大数据分析》读书笔记——并行度

    并行度一个RDD针对多个数据分区会并行运行同样的计算。并行度是并行执行的任务数量,而不是切分任务的数量。 并行度推...

  • Spark Core 性能调优之设置并行度

    操作场景 并行度控制任务的数量,影响shuffle操作后数据被切分成的块数。调整并行度让任务的数量和每个任...

  • vue-cli配置

    使用 yarn 的好处:yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源...

  • 线程池是如何复用的

    问题:线程池是如何实现线程复用,如何并行执行多个任务的。简单:一般都是介绍,核心线程和最大线程数量,介绍创建线程的...

  • Hadoop宕机

    1)如果MR造成系统宕机。此时要控制Yarn同时运行的任务数,和每个任务申请的最大内存。调整参数: yarn.sc...

  • Python多任务(高级编程六)

    并行:真的多任务 cpu大于当前执行的任务并发:假的多任务 cpu小于当前执行的任务 多线程 查看线程数量 thr...

  • 41. 进程和线程

    真正的并行执行多任务只能在多核CPU上实现,但是,由于任务数量远远多于CPU的核心数量,所以,操作系统也会自动把很...

  • 任务并行

    任务并行的实质是同时可以运行的线程数量。 jdk concurrent future callable,要写匿名块...

  • Flink On Yarn模式, 限制任务上传的数量

    背景 Flink On Yarn的模式, 每次启动任务会将相应的依赖包和flink依赖的jar包, 提交到HDFS...

网友评论

      本文标题:Yarn 任务最大并行数量

      本文链接:https://www.haomeiwen.com/subject/mqpflctx.html