2017-06-28 5 views
0

次の構成のクラスタでsparkR(spark 2.0.0、yarn)を使用しています。マシン5台(24コア+各200GB 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%のリソース(この例では、5 * 24コア= 120コア、120/4 = 30エグゼキュータ)を使用するxコアエグゼキュータの数です。

私は(これだけデフォルトパラメータはスパークのドキュメントに存在するものである - それらは容易にオーバーライドされるべきで)割り当てられていないデフォルトのPARAMATERSと別のスパークdefaults.confに作成しようとしたことで:I、再び

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

http://driver-node:4040のSpark UIを見ても、エグゼキュータの総数は正しくありません(タブ "Executors")。同時に、 "環境"タブのすべての設定パラメータは、Rスクリプトで私が提供したものとまったく同じです。

誰かが理由を知っていますか? R APIまたはインフラストラクチャクラスタ固有の問題(糸の設定など)に問題がありますか?

答えて

1

spark.driver.extraJavaOptionsを使用する必要があります。

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 = "") 
      )) 

また、​​個の引数を変更することもできます。

Sys.setenv("SPARKR_SUBMIT_ARGS"="--master yarn --driver-memory 10g sparkr-shell") 
関連する問題