2016-12-01 37 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任務提交給不同的資源「隊列」? –