我有很多我不明白Spark,Spark Jobserver和Mesosphere的DC / OS。但我非常喜欢Jobserver项目,也非常喜欢我们的DC / OS集群,并且非常希望让它们一起运行。
将Docker容器扔进马拉松文件like this example不起作用。我想也许这都是因为我不知道什么是SPARK_MASTER url传递(我仍然不知道,任何帮助都会非常感激),但后来我尝试从马拉松文件中删除它,它应该仍然运行本地模式下的项目,也不起作用。这让我意识到,除了不知道如何将这个jobserver连接到我的DCOS spark调度程序之外,我也只是不知道为什么这个Docker容器会在集群上失败,而不是在我的本地机器上失败,即使它没有通过任何参数。
我的日志显示不多,并且在stdout中以下后面的Docker容器退出状态为:
LOG_DIR empty; logging will go to /tmp/job-server
当我在本地运行时,它是继续将log4j运行到我的stdout之前的最后一个日志,并告诉我jobserver正在启动。我在stderr中看到以下内容:
app/server_start.sh: line 54: 15 Killed $SPARK_HOME/bin/spark-submit --class $MAIN --driver-memory $JOBSERVER_MEMORY --conf "spark.executor.extraJavaOptions=$LOGGING_OPTS" --driver-java-options "$GC_OPTS $JAVA_OPTS $LOGGING_OPTS $CONFIG_OVERRIDES" $@ $appdir/spark-job-server.jar $conffile
这似乎表明server_start.sh是从spark jobserver docker运行的,那个脚本出于某种原因死了?
我一直把我的马拉松文件剥离到这个,这仍然给我同样的错误:
{
"id": "/jobserver",
"cpus": 0.5,
"mem": 100,
"ports": [0],
"instances": 1,
"container": {
"type": "DOCKER",
"docker": {
"image": "velvia/spark-jobserver:0.6.2.mesos-0.28.1.spark-1.6.1"
}
}
}
非常感谢任何帮助。
答案 0 :(得分:3)
以下在我尝试的时候为我工作了。
{
"id": "/spark.jobserver",
"cmd": null,
"cpus": 2,
"mem": 2048,
"disk": 50,
"instances": 1,
"container": {
"type": "DOCKER",
"volumes": [],
"docker": {
"image": "velvia/spark-jobserver:0.6.2.mesos-0.28.1.spark-1.6.1",
"network": "BRIDGE",
"portMappings": [
{
"containerPort": 8090,
"hostPort": 0,
"servicePort": 10001,
"protocol": "tcp",
"labels": {}
}
],
"privileged": false,
"parameters": [],
"forcePullImage": false
}
},
"env": {
"SPARK_MASTER": "mesos://zk://10.29.83.3:2181,10.29.83.4:2181/mesos"
},
"portDefinitions": [
{
"port": 10001,
"protocol": "tcp",
"labels": {}
}
]
}