首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略独立集群中通过REST作业提交的spark.master配置。

忽略独立集群中通过REST作业提交的spark.master配置。
EN

Stack Overflow用户
提问于 2017-12-18 13:48:11
回答 1查看 600关注 0票数 2

我有一个独立的星火集群在HA模式(2个硕士)和两个工人在那里注册。

我通过REST接口提交了火花作业,并提供了以下细节,

代码语言:javascript
复制
{
    "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)提交给Active Spark。

当驱动程序启动时,-Dspark.master被设置为“星火://火花-hn1:7077”,而不是在sparkProperties中传递的值,即“sparkProperties://火花-hn0:7077,火花-hn1:7077”。

从正在运行驱动程序的工作节点记录

代码语言:javascript
复制
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://Worker@172.18.0.4: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/"

这给我带来了问题,因为在作业执行期间,活动的主程序会掉下来,而另一个主程序会变得活跃。因为驱动程序只知道一个主(旧的),所以它无法到达新的主程序并继续作业执行(从spark.driver.supervise=true开始)。

在Spark接口中传递多个主urls的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-20 11:52:37

看起来这是RestServer实现中的一个bug,spark.master正在被替换。https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/deploy/rest/StandaloneRestServer.scala#L147

我们仍然可以通过在spark.master中设置spark.driver.extraJavaOptions来解决这个问题,同时通过REST接口提交作业,如下所示

代码语言:javascript
复制
"sparkProperties": {
        "spark.app.name": "TeraGen3",
        ...
        "spark.driver.extraJavaOptions": "-Dspark.master=spark://spark-hn0:7077,spark-hn1:7077"
    }

这对我有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47869878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档