有可能限制一个正在运行的应用程序在yarn中的资源吗



有时在工作中,我需要使用我们的集群来运行一些东西,但它被使用了100%,因为当有可用资源时,某些作业会扩展,并且我的作业在很长一段时间内不会执行。是否可以限制正在运行的应用程序的资源?或者我们应该以某种方式选择一种不同的调度策略,如果是,那么是哪一种?

我们使用Capacity Scheduler。

这取决于你的应用程序是什么,你是100%来自大型查询(hive应用程序(还是来自另一个应用程序,比如说spark应用程序。

Spark可以很容易地吃掉整个集群,甚至几乎什么都不做,这就是为什么你需要定义给这些应用程序、内存、驱动程序内存等多少cpu。

当你做火花提交时,你就完成了,例如

spark-submit --master yarn --deploy-mode cluster --queue {your yarn queue} {program name} --driver-cores 1 --driver-memory 1G --num-executors 2 --executor-cores 1 -executor-memory 2G

这将限制该应用程序仅使用这些资源(加上一点开销(

如果你有一个更复杂的环境,那么你需要按队列进行限制,例如,queue1=20%的集群,最多只有20%,默认情况下,如果没有人使用它,queue1可以达到100%的集群。

理想情况下,您应该有几个具有适当限制的队列,并非常小心抢占。

相关内容