【问题标题】:How to launch JavaSparkContext client in cluster mode?如何在集群模式下启动 JavaSparkContext 客户端?
【发布时间】: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


【解决方案1】:

如果你能用 spark-submit 命令来做,那么你必须能用 new JavaSparkContext(conf) 做同样的事情,这里 conf 对象应该有集群模式 我认为您需要启用机器和集群之间的连接

【讨论】:

  • 我已经仔细检查了 spark-submit 是否与 --deploy-mode 集群参数一起正常工作。 JVM-client 只是忽略了类似的属性 spark.submit.deployMode - 我已经发布了来自 JVM-client 和 worker 执行器日志的消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 2018-05-07
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
  • 2021-04-26
相关资源
最近更新 更多