java—限制每个应用程序中同时运行的容器数

wztqucjr  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(549)

假设一个应用程序有长时间运行的任务(运行1小时或更长时间)。当mr作业启动时,所有集群资源都被阻塞,至少在一个容器完成之前是这样,这有时可能需要很长时间。
有没有办法限制同时运行的容器的数量?类似的东西,例如map.vcores.max(每nm或全局)。因此其他应用程序不会被阻止。
有什么想法吗?
ps.hadoop 2.3.0版

gkl3eglg

gkl3eglg1#

据我所知,你们不能直接限制集装箱的数量。这只是由资源决定的。因此,您所能做的就是限制每个应用程序的资源。
根据fair scheduler文档,您可以将应用程序分配到特殊队列。在这种情况下,您可以接收非常接近您的任务的配置—因为您可以限制每个队列的内存或核心资源。
也许你可以切换到不同的调度器,甚至实现自定义的一个,但我不喜欢这样做,因为这样做你走出了良好的测试环境,我不认为你真的需要做这么多的工作,像自定义实现。

c6ubokkw

c6ubokkw2#

如果使用的是资源池,则可以限制在单个池中同时运行的应用程序的数量。虽然这不完全是你所要求的,但它可能会被证明是有用的。
如果您使用的是cloudera manager,请查看动态资源池配置。

如果没有,结帐http://docs.hortonworks.com/hdpdocuments/hdp2/hdp-2.1.3/bk_system-admin-guide/content/setting_application_limits.html
它描述了yarn.scheduler.capacity..maximum应用程序

vhipe2zx

vhipe2zx3#

这种行为/特性可以按框架级别处理,而不是按Yarn处理。
在mapreduce中, mapreduce.job.running.map.limit 以及 mapreduce.job.running.reduce.limit 可用于限制同时运行的容器。
在tez中,可以使用属性 tez.am.vertex.max-task-concurrency 相关jira-
https://issues.apache.org/jira/browse/mapreduce-5583
https://issues.apache.org/jira/browse/tez-2914

相关问题