我正在尋找如何以及火花在 源代碼中爲每個執行程序分配內核。 是否有可能在獨立的 羣集模式下控制programmaticaly分配的內核?獨立羣集模式:spark如何分配spark.executor.cores?
問候, 利瑪
我正在尋找如何以及火花在 源代碼中爲每個執行程序分配內核。 是否有可能在獨立的 羣集模式下控制programmaticaly分配的內核?獨立羣集模式:spark如何分配spark.executor.cores?
問候, 利瑪
火花允許配置的選項,以通過對SparkConf
類的.set
方法傳遞。
下面是一些Scala代碼,設置了一個新的火花配置:
new SparkConf()
.setAppName("App Name")
.setMaster('local[2]')
.set("spark.executor.cores", "2")
文檔有關的不同配置選項:
http://spark.apache.org/docs/1.6.1/configuration.html#execution-behavior
我沒有經歷過的源代碼看起來詳盡,但我認爲這是執行程序內核在分配之前定義的源代碼中的位置:
在單機模式下,您有以下選項:
一個。在啓動集羣時,您可以提到爲spark應用程序分配了多少個cpu核心。這可以設置爲env變量SPARK_WORKER_CORES或作爲參數傳遞給shell腳本(-c或--cores)
b。應該小心(如果其他應用程序也共享像核心資源)不允許火花采取所有核心。這可以使用spark.cores.max參數進行設置。
c。您也可以通過--total-executor-cores <numCores>
火花外殼
欲瞭解更多信息,你可以看看here
好的,但如何星火確保執行人不使用超過spark.executor.cores嗎? – ElfoLiNk
我想我不明白你的問題。只要您傳遞適當的配置參數,執行程序就不應該使用超過該數量的內核。這確實需要您信任Spark代碼 – brycemcd