将Spark作业从Jupyter连接到在Mesosphere上运行的Spark服务

时间:2018-09-07 15:14:07

标签: apache-spark jupyter-notebook jupyter mesos mesosphere

我正在使用Mesosphere设置数据集群。我已经成功部署了Spark,并且每当通过这样的DCOS命令行工具运行Spark作业时:

dcos spark run --submit-args="--class org.apache.spark.examples.SparkPi https://downloads.mesosphere.com/spark/assets/spark-examples_2.11-2.0.1.jar 30"

这很好用。 Mesos注册了驱动程序并成功执行了Spark作业,如在/ service / spark

中可以找到的那样

现在,我下一步要尝试通过外部Jupyter笔记本提交Spark作业。所有防火墙设置都正确,服务器可以通过其专用网络从主节点访问所有内容。但是我似乎无法连接Jupyter笔记本的Spark Scala代码。我的猜测是,从Jupyter笔记本发出的任何请求中显然不包括在连接DCOS CLI工具之前进行的身份验证。

我确实在Jupyter笔记本的同一服务器上安装了DCOS CLI工具。使用时,我也有一个访问令牌:

dcos config show core.dcos_acs_token

现在,请查看Jupyter笔记本中的以下代码:

import org.apache.spark.sql.SparkSession
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
val sparkConf = new SparkConf()
    .setMaster("mesos://<private_master_ip>/service/spark")
    .setAppName("Spark on Mesos Alpha Cluster")
    .set("spark.submit.deployMode", "cluster")
    .set("spark.driver.cores", "1")
    .set("spark.driver.memory", "1G")
    .set("spark.executor.memory", "1G")
    .set("spark.mesos.executor.docker.forcePullImage", "true")
    .set("spark.mesos.executor.docker.image", "mesosphere/spark:2.3.1-2.2.1-2-hadoop-2.6")
val sparkContext = new SparkContext(sparkConf)

这不起作用,因为它给了我以下错误:

org.apache.spark.SparkException: Exiting due to error from cluster scheduler: Failed to create a master detector for '<private_master_ip>/service/spark': Failed to parse '<private_master_ip>/service/spark'
    at org.apache.spark.scheduler.TaskSchedulerImpl.error(TaskSchedulerImpl.scala:500)
    at org.apache.spark.scheduler.cluster.mesos.MesosCoarseGrainedSchedulerBackend.error(MesosCoarseGrainedSchedulerBackend.scala:669)
    at org.apache.mesos.MesosSchedulerDriver.start(Native Method)
    at org.apache.mesos.MesosSchedulerDriver.run(MesosSchedulerDriver.java:254)
    at org.apache.spark.scheduler.cluster.mesos.MesosSchedulerUtils$$anon$1.run(MesosSchedulerUtils.scala:125)
lastException = null
Name: org.apache.spark.SparkException
Message: Error starting driver, DRIVER_ABORTED

如前所述,我猜这部分是由于授权。我确实有访问令牌,但我不知道如何将其包含在Jupyter Notebook中。

但是我在这里也可能走错了路。如何将Jupyter笔记本Spark Scala与Mesosphere的Spark服务连接?

先谢谢了。如果需要任何澄清,请询问。我已经在这个问题上搜寻了很多,但无济于事。

0 个答案:

没有答案