2016-06-08 103 views

回答

0

火花允許配置的選項,以通過對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

我沒有經歷過的源代碼看起來詳盡,但我認爲這是執行程序內核在分配之前定義的源代碼中的位置:

https://github.com/apache/spark/blob/d6dc12ef0146ae409834c78737c116050961f350/core/src/main/scala/org/apache/spark/scheduler/cluster/ExecutorData.scala

+0

好的,但如何星火確保執行人不使用超過spark.executor.cores嗎? – ElfoLiNk

+0

我想我不明白你的問題。只要您傳遞適當的配置參數,執行程序就不應該使用超過該數量的內核。這確實需要您信任Spark代碼 – brycemcd

0

在單機模式下,您有以下選項:

一個。在啓動集羣時,您可以提到爲spark應用程序分配了多少個cpu核心。這可以設置爲env變量SPARK_WORKER_CORES或作爲參數傳遞給shell腳本(-c或--cores)

b。應該小心(如果其他應用程序也共享像核心資源)不允許火花采取所有核心。這可以使用spark.cores.max參數進行設置。

c。您也可以通過--total-executor-cores <numCores>火花外殼

欲瞭解更多信息,你可以看看here

相關問題