Spark Mesos Dispatcher

时间:2015-07-01 14:50:03

标签: apache-spark mesos

我的团队正在Amazon Cloud上部署新的大数据架构。我们有Mesos并运行Spark工作。

我们从同一群集内的堡垒主机提交Spark作业(即:jars)。但是,这样做的堡垒主机是驱动程序,这称为client mode(如果我理解正确的话)。

我们想尝试cluster mode,但我们不知道从哪里开始调度程序。

文档说要在群集中启动它,但我很困惑,因为我们的主人没有安装Spark,我们使用Zookeeper进行大师选举。在从属节点上启动它不是一个可用的选项,因为slave可能会失败,我们不想将从属ip或公共DNS暴露给堡垒主机。

在堡垒主机上启动调度程序是否正确?

非常感谢

3 个答案:

答案 0 :(得分:5)

文档不是很详细。 但是,我们对发现的内容非常满意: 根据{{​​3}},Mesos集群(以及Python应用程序)不支持集群模式。

但是,我们使用--master mesos://zk://...

启动了调度程序

要提交申请,您需要以下内容:

spark-submit --deploy-mode cluster <other options> --master mesos://<dispatcher_ip>:7077 <ClassName> <jar>

如果从堡垒机器运行此命令,它将无法工作,因为Mesos主站将在与堡垒相同的路径中查找可提交的jar。我们最终将该文件公开为可下载的URL。

希望这有帮助

答案 1 :(得分:0)

我还没有在Mesos中使用群集模式,cluster mode description不是很详细。在脚本上甚至没有--help选项,就像应该有的那样,恕我直言。但是,如果您未通过--master参数,则会显示一条帮助消息,并且结果显示有一个--zk选项用于指定Zookeeper URL。

可能有效的方法是使用相应的--master--zk选项在堡垒本身上启动此脚本。这对你有用吗?

答案 2 :(得分:0)

您可以使用带有spark的docker镜像和application.jar,而不是将jar上传到s3。我还没试过,但我认为它应该有效。 SPARK_DIST_CLASSPATH中的环境变量为spark-env.sh。我使用没有hadoop编译的spark分发与apache hadoop 2.7.1

export SPARK_DIST_CLASSPATH=$(/opt/hadoop/bin/hadoop classpath):/opt/hadoop/share/hadoop/tools/lib/*:/opt/application.jar