我在具有以下配置的羣集上使用sparkR(spark 2.0.0,yarn):5臺機器(每個24個內核+ 200 GB RAM)。想與更多的參數運行sparkR.session()只佔總資源的比例分配給我的工作:SparkR - 覆蓋spark.conf中的默認參數
if(Sys.getenv("SPARK_HOME") == "") Sys.setenv(SPARK_HOME = "/...")
library(SparkR, lib.loc = file.path(Sys.getenv('SPARK_HOME'), "R", "lib"))
sparkR.session(master = "spark://host:7077",
appname = "SparkR",
sparkHome = Sys.getenv("SPARK_HOME"),
sparkConfig = list(spark.driver.memory = "2g"
,spark.executor.memory = "20g"
,spark.executor.cores = "4"
,spark.executor.instances = "10"),
enableHiveSupport = TRUE)
奇怪的是,似乎參數要傳遞給sparkContext,但在同一時間,我結束與使用100%資源的X-core執行程序(在本例中,5 * 24個內核= 120個內核可用; 120/4 = 30個執行程序)。
我試圖與分配沒有默認PARAMATERS創建另一火花defaults.conf(所以唯一的默認參數是那些火花文檔中存在的 - 他們應該很容易overrided)由:
if(Sys.getenv("SPARK_CONF_DIR") == "") Sys.setenv(SPARK_CONF_DIR = "/...")
再者,我查看http://driver-node:4040上的Spark UI,執行程序的總數不正確(標籤爲「Executors」),但同時標籤「Environment」中的所有配置參數與我在R腳本中提供的參數完全相同。
任何人都知道可能是什麼原因? R API或某些基礎設施集羣特定問題(如紗線設置)存在問題