我目前正在建立一个Spark集群,将由几组客户使用,我对Spark中的资源分配方法有点困惑。
似乎Spark集群的治理模型有点欠缺,因为每个应用程序都可以指定自己的资源需求,从而有效地消耗整个集群并阻塞其他应用程序。
我知道我可以使用spark.deploy.defaultcores来避免应用程序意外地请求所有可用内核的情况,但这仍然会导致应用程序指定的spark.cores.max远远高于其实际应该获得的值。这在共享集群中是一个真正的问题...
有什么方法可以覆盖单个应用程序指定的资源需求吗?
发布于 2016-12-01 23:01:45
共享集群中的Spark不会产生任何问题,因为大多数情况下,您将在Yarn或Mesos等资源管理器上运行Spark应用程序。
Yarn/Mesos在资源管理方面都很好,你可以在yarn中为不同的组创建自己的队列。您可以为为调度多个用户的作业而创建的队列选择调度程序算法。
除此之外,您还可以在spark中启用动态资源分配,这将允许根据需要进行运行时资源分配/释放。
https://stackoverflow.com/questions/40913053
复制相似问题