2017-06-28 4 views
0

Ich benutze sparkR (Funken 2.0.0, Garn) auf Cluster mit folgender Konfiguration: 5 Maschinen (24 Kerne + 200 GB RAM). Gesucht sparkR.session() mit zusätzlichen Argumenten laufen nur einen Prozentsatz der Gesamtressourcen zu meinem Job vergeben:SparkR - überschreiben Standardparameter in 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) 

Das Seltsame ist, dass Parameter schienen sparkContext weitergegeben werden, aber zur gleichen Zeit, die ich am Ende mit einer Anzahl von X-Core-Executoren, die 100% Ressourcen verwenden (in diesem Beispiel sind 5 * 24 Kerne = 120 Kerne verfügbar; 120/4 = 30 Executoren).

ich versucht, einen anderen Funken defaults.conf ohne Standard-Paramater zugewiesen (also die einzigen Standardparameter sind solche existierte in Funken Dokumentation - sie leicht overrided werden sollte) die Schaffung von:

if(Sys.getenv("SPARK_CONF_DIR") == "") Sys.setenv(SPARK_CONF_DIR = "/...") 

Auch wenn ich schaute auf der Spark-Benutzeroberfläche auf http://driver-node:4040 die Gesamtzahl der Executoren ist nicht korrekt (Registerkarte "Executors"), aber zur gleichen Zeit sind alle Config-Parameter in der Registerkarte "Umgebung" genau die gleichen wie die von mir in R-Skript zur Verfügung gestellt.

Wer weiß, was der Grund sein könnte? Ist das Problem mit R-API oder einem infrastrukturellen Cluster-spezifischen Problem (z. B. Garneinstellungen)

Antwort

1

Ich habe festgestellt, dass Sie die spark.driver.extraJavaOptions, z.

spark <- sparkR.session(master = "yarn", 
      sparkConfig = list(
       spark.driver.memory = "2g", 
       spark.driver.extraJavaOptions = 
       paste("-Dhive.metastore.uris=", 
        Sys.getenv("HIVE_METASTORE_URIS"), 
        " -Dspark.executor.instances=", 
        Sys.getenv("SPARK_EXECUTORS"), 
        " -Dspark.executor.cores=", 
        Sys.getenv("SPARK_CORES"), 
        sep = "") 
      )) 

Sie alternativ die spark-submit args ändern, z.B.

Sys.setenv("SPARKR_SUBMIT_ARGS"="--master yarn --driver-memory 10g sparkr-shell")