2016-12-01 61 views
1

我目前正在设置一个Spark群集,将由几个客户群组使用,我对Spark中的资源分配方法有点困惑。覆盖Spark应用程序资源需求

似乎Spark集群的治理模式有点欠缺,因为每个应用程序都可以指定自己的资源需求,从而有效地使用整个集群并阻止其他应用程序。

我知道我可以使用spark.deploy.defaultcores来消除意外最终请求所有可用内核的应用程序的情况,但这仍然会导致应用程序指定的spark.cores.max远高于它应该得到什么。这是共享群集中的一个实际问题...

是否有任何方法覆盖由单个应用程序指定的资源需求?

回答

2

共享集群中的Spark不会产生任何问题,因为大多数情况下,您会在像Yarn或Mesos这样的资源管理器上运行Spark应用程序。

纱线/ Mesos在资源管理方面都非常优秀,您可以为不同的群体创建自己的纱线队列。您可以为您创建的用于调度多个用户的作业的队列选择调度程序算法。

除此之外,您可以在spark中启用动态资源分配,这将允许根据需要运行时资源分配/解除分配。

+0

感谢您的洞察。我们目前正在使用独立模式,因为我们不想将堆栈扩展到超出需要的地方(该集群将专门用于Spark),所以我希望有一些方法可以通过Spark本身来实现。 Do纱/ Mesos是否允许每个用户分配不同的资源,还是存在进一步的粒度?例如,是否可以使用相同的帐户将Yarn/Mesos中的Spark任务提交给不同的资源“队列”? –