2015-01-14 46 views
8

在靜態分區文檔https://spark.apache.org/docs/latest/job-scheduling.html的這個頁面中,它說:「通過這種方法,每個應用程序都可以使用最大量的資源」。什麼控制給應用程序多少Spark集羣?

我只是想知道,這些最大的資源是什麼?我發現每個執行器設置的內存(下面在動態分區中提到),我假設它限制應用程序獲得的內存資源。但是決定啓動多少個執行程序/使用了多少個來自羣集的節點,例如總集羣內存和獲得「採取」的核心?

在另一個類似的說明中有沒有辦法改變每個作業或任務級別上要求的內存?

回答

11

資源數量取決於正在使用的集羣管理器,因爲不同的集羣管理器將提供不同的分配。

例如在獨立模式下,Spark將嘗試使用所有節點。 spark.max.cores將控制整個作業將在整個節點中佔用多少內核。如果未設置,Spark將使用spark.deploy.defaultCores。從spark.deploy.defaultCores的文件進一步明確其用途:核心

默認號碼給應用程序星火的獨立 模式,如果他們不設置spark.cores.max。如果未設置,應用程序 將始終獲取所有可用內核,除非它們自己配置spark.cores.max 。在共享羣集上設置此較低值以防止 的用戶默認抓取整個羣集。

在Mesos粗粒度模式下,Spark將默認分配所有可用內核。使用spark.max.cores來限制每個作業。

在Mesos細粒度模式下,Spark將根據作業需要爲每個任務分配一個核心,然後釋放它們。這確保了以較高的任務分配開銷爲代價的合理使用。

紗,每documentation

的--num執行人選項星火YARN客戶端控件多少 執行人將分配集羣上,而--executor內存和 - 執行者核心控制每個執行者的資源。

關於內存,沒有辦法使用spark.executor.memory來設置每個作業或任務的總內存,每個執行器只能設置一個。分配給您的作業的內存將爲spark.executor.memory x #executors

+0

寫得很漂亮。只是一個後續問題,是否有辦法爲每個應用程序的每個執行程序啓動多個任務?這個問題來自於我的場景,其中我的羣集上只運行一個應用程序,每個執行程序的理想任務數爲2到3,我推測 – Suresh

相關問題