我们有一个由16个节点组成的火花簇。是否可以限制节点1和1。 2用于申请' A&#39 ;;节点3,4,5用于应用' B'节点10,11,12,15用于应用' C'等等?
从文档中,我了解到我们可以设置一些属性来控制spark执行器核心,要启动的执行器数量,存储器等。但是,我很想知道我是否能够实现上述用例。
答案 0 :(得分:2)
一个明显的方法是配置3个具有所需拓扑的不同群集,否则你运气不好,火花没有任何规定, 因为它通常是一个坏主意,并且通常违背火花和聚类的设计原则。为什么?如果您将应用程序A分配给特定主机,但它会空闲,而应用程序B以100%运行,则您有2个可能适用于B的空闲主机,因此您将浪费昂贵的计算资源。通常,你想要的是为每个应用程序分配一定数量的资源,并让系统决定如何分配它们(调度..普通火花是非常基本的,但在YARN和Mesos下运行你可以更复杂)。
另一个原因是,您不希望规则指定特定主机或主机集。如果将节点1和2分配给应用程序A并且它们都已关闭,该怎么办?除了不高效地使用您的资源之外,将您的应用程序绑定到特定主机也会使其难以通过在其他主机上重新安排它们来抵御故障。
您可能有其他方法可以执行类似的操作,但如果您在YARN或Mesos下运行spark,则可以定义队列或配额,并限制每个应用程序在给定时间可以使用的资源量。
一般来说,这取决于原因,为什么要静态地为应用程序分配资源。如果是资源管理,则应该查看调度程序和队列。如果是为了安全起见,你应该拥有多个集群,请记住你的性能会下降。