我正在使用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服务连接?
先谢谢了。如果需要任何澄清,请询问。我已经在这个问题上搜寻了很多,但无济于事。