2017-12-18 2 views
2

HAモード(2マスター)でスタンドアロンスパーククラスタがあり、そこに登録されている複数のワーカーがいます。スタンドアロンクラスタでのRESTジョブの送信によるspark.master設定は無視されます

私は詳細を以下にRESTインターフェースを介してスパークジョブを送信し、

{ 
    "sparkProperties": { 
     "spark.app.name": "TeraGen3", 
     "spark.default.parallelism": "40", 
     "spark.executor.memory": "512m", 
     "spark.driver.memory": "512m", 
     "spark.task.maxFailures": "3", 
     "spark.jars": "file:///tmp//test//spark-terasort-1.1-SNAPSHOT-jar-with-dependencies.jar", 
     "spark.eventLog.enabled": "false", 
     "spark.submit.deployMode": "cluster", 
     "spark.driver.supervise": "true", 
     "spark.master": "spark://spark-hn0:7077,spark-hn1:7077" 
    }, 
    "mainClass": "com.github.ehiggs.spark.terasort.TeraGen", 
    "environmentVariables": { 
     "SPARK_ENV_LOADED": "1" 
    }, 
    "action": "CreateSubmissionRequest", 
    "appArgs": ["4g", "file:///tmp/data/teradata4g/"], 
    "appResource": "file:///tmp//test//spark-terasort-1.1-SNAPSHOT-jar-with-dependencies.jar", 
    "clientSparkVersion": "2.1.1" 
} 

この要求は、RESTインターフェース(http://spark-hn1:6066/v1/submissions/create)を介して活性スパークマスターに提出されます。

ドライバが起動したとき、sparkPropertiesに渡された値の代わりに、-Dspark.masterが "spark:// spark-hn1:7077"に設定されます。これは "spark:// spark-hn0:7077、spark -hn1:7077」と入力します。ドライバは、アクティブマスターは、ジョブの実行とアクティブになり、他のマスターの間にダウンしたとき、これは私に問題を引き起こしている

17/12/18 13:29:49 INFO worker.DriverRunner: Launch Command: "/usr/lib/jvm/java-8-openjdk-amd64/bin/java" "-Dhdp.version=2.6.99.200-0" "-cp" "/usr/hdp/current/spark2-client/conf/:/usr/hdp/current/spark2-client/jars/*:/etc/hadoop/conf/" "-Xmx512M" "-Dspark.driver.memory=51 
2m" "-Dspark.master=spark://spark-hn1:7077" "-Dspark.executor.memory=512m" "-Dspark.submit.deployMode=cluster" "-Dspark.app.name=TeraGen3" "-Dspark.default.parallelism=40" "-Dspark.jars=file:///tmp//test//spark-terasort-1.1-SNAPSHOT-jar-with-dependencies.jar" "-Dspark.ta 
sk.maxFailures=3" "-Dspark.driver.supervise=true" "-Dspark.eventLog.enabled=false" "org.apache.spark.deploy.worker.DriverWrapper" "spark://[email protected]:40803" "/var/spark/work/driver-20171218132949-0001/spark-terasort-1.1-SNAPSHOT-jar-with-dependencies.jar" "com.git 
hub.ehiggs.spark.terasort.TeraGen" "4g" "file:///tmp/data/teradata4g/" 

を実行しているワーカーノードから

ログ。ドライバは1つのマスター(古いもの)しか知っていないので、新しいマスターに到達できず、ジョブの実行を続行できません(spark.driver.supervise = true以降)

複数のマスターURLをSpark RESTインターフェイス。

答えて

0

このように見えるのは、Restarkの実装で、spark.masterが置き換えられているバグです。 https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/deploy/rest/StandaloneRestServer.scala#L147

我々はまだこれは私のために働いた

"sparkProperties": { 
     "spark.app.name": "TeraGen3", 
     ... 
     "spark.driver.extraJavaOptions": "-Dspark.master=spark://spark-hn0:7077,spark-hn1:7077" 
    } 

を次のようにRESTインターフェースを介してジョブを送信しながら、spark.driver.extraJavaOptionsでspark.masterを設定することにより、この問題を回避することができます。

関連する問題