我的团队正在Amazon Cloud上部署新的大数据架构。我们有Mesos并运行Spark工作。
我们从同一群集内的堡垒主机提交Spark作业(即:jars)。但是,这样做的堡垒主机是驱动程序,这称为client mode(如果我理解正确的话)。
我们想尝试cluster mode,但我们不知道从哪里开始调度程序。
文档说要在群集中启动它,但我很困惑,因为我们的主人没有安装Spark,我们使用Zookeeper进行大师选举。在从属节点上启动它不是一个可用的选项,因为slave可能会失败,我们不想将从属ip或公共DNS暴露给堡垒主机。
在堡垒主机上启动调度程序是否正确?
非常感谢
答案 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