Spark Mesos 调度程序

Spark Mesos Dispatcher

我的团队正在 Amazon Cloud 上部署新的大数据架构。我们启动了 Mesos 和 运行 个 Spark 作业。

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

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

文档说在集群中启动它,但我很困惑,因为我们的主节点没有安装 Spark,我们使用 Zookeeper 进行主节点选举。在从属节点上启动它不是一个可用的选项,因为从属可能会失败并且我们不想向堡垒主机公开从属 ip 或 public DNS。

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

非常感谢

我没用过Mesos的集群模式,cluster mode description不是很详细。脚本上什至没有 --help 选项,恕我直言。但是,如果您不传递 --master 参数,它会出错并显示一条帮助消息,结果表明有一个 --zk 选项用于指定 Zookeeper URL。

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

文档不是很详细。 然而,我们对我们的发现感到非常满意: 根据 documentation,Mesos 集群(以及 Python 应用程序)不支持集群模式。

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

启动了调度程序

要提交申请,您需要满足以下条件:

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

如果您 运行 从堡垒机执行此命令,它将不起作用,因为 Mesos 管理节点将在与堡垒相同的路径中查找可提交的 jar。我们结束了将文件公开为可下载文件 URL.

希望对您有所帮助

您可以使用带有 spark 的 docker 图像和您的 application.jar 而不是将 jar 上传到 s3。我还没有尝试过,但我认为它应该有效。环境变量是spark-env.sh中的SPARK_DIST_CLASSPATH。我使用在没有 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