【发布时间】:2019-02-06 22:33:55
【问题描述】:
如何启动 JavaSparkContext 客户端集群模式?我正在尝试使用以下配置连接到具有集群模式的现有 Spark 集群(Spark 集群工作人员无法通过网络访问我运行 Java 代码的机器):
SparkConf conf = new SparkConf().setMaster("spark://spark-prod:7077")
.setAppName("Word Count")
.set("spark.submit.deployMode", "cluster");
// Create a Java version of the Spark Context
JavaSparkContext sc = new JavaSparkContext(conf);
但客户端忽略设置并在我的机器上启动驱动程序而不是使用工人的驱动程序:
INFO Utils: Successfully started service 'sparkDriver' on port 45847.
并且工作执行者也在尝试连接到我机器的驱动程序,而不是工作人员的驱动程序之一(就像它应该使用 spark.submit.deployMode 属性一样):
"--driver-url" "spark://CoarseGrainedScheduler@my_machine_dns:45847"
那么这里有一个问题:如何在 spark.submit.deployMode=cluster 模式下启动 JavaSparkContext 客户端?
【问题讨论】:
-
你是直接在你的机器上运行main方法吗?您应该使用
spark-submit在远程集群上运行驱动程序。 -
@ernest_k 我是。我尝试使用 spark-submit 命令并且效果很好。我无法将 JavaSparkContext 客户端与远程 Spark 集群一起使用吗?
-
您能够这样做,但运行您的驱动程序的机器必须可以从工作机器 AFAIK 访问
-
我认为集群模式的通信可以通过开放的套接字进行(并且当我使用 spark-submit 时看起来它正在工作)。好,谢谢。我将尝试打开从 Spark 集群到我的机器的网络访问。
-
您是否尝试设置属性
spark.driver.host以强制驱动程序位于您的一名工人身上?
标签: apache-spark