限制纱线中每个应用同时运行的容器数量

时间:2014-07-09 16:16:16

标签: java hadoop scheduling distributed-computing yarn

假设纱线应用程序具有长时间运行的任务(运行1小时或更长时间)。当MR作业启动时,所有群集资源都被阻止,至少在一个容器完成之前,有时可能需要很长时间。

有没有办法限制同时运行的容器数量?有些东西,例如。 map.vcores.max (每个NM或全局)。所以其他应用程序没有被阻止。

有什么想法吗?

PS。 Hadoop 2.3.0

3 个答案:

答案 0 :(得分:2)

据我所知,您无法直接限制容器数量。这仅由资源决定。因此,您可以做的最好是限制每个应用程序的资源。

根据Fair scheduler documentation,您可以将应用程序分配给特殊队列。在这种情况下,您可以接收与您的任务非常接近的配置 - 因为您可以限制每个队列的内存或核心资源。

也许您可以切换到不同的计划程序,甚至可以实现自定义程序,但我不喜欢这样做,因为这样做,你走出了经过充分测试的环境,我认为你真的不需要这样做很多像自定义实现的工作。

答案 1 :(得分:1)

此行为/功能可以按框架级别而不是YARN进行处理。

在Mapreduce中,/usr/libmapreduce.job.running.map.limit可用于限制同时运行的容器。

在Tez中,可以使用属性mapreduce.job.running.reduce.limit

进行处理

相关Jira -
https://issues.apache.org/jira/browse/MAPREDUCE-5583
https://issues.apache.org/jira/browse/TEZ-2914

答案 2 :(得分:0)

如果使用资源池,则可以限制在单个池中同时运行的应用程序数。虽然这不是你要求的,但它可能证明是有用的。

如果您使用的是Cloudera Manager,请查看动态资源池配置。 enter image description here

如果没有,请结帐http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.1.3/bk_system-admin-guide/content/setting_application_limits.html

描述了yarn.scheduler.capacity..maximum-applications