gpt4 book ai didi

docker - 如何远程运行spark-submit?

转载 作者:行者123 更新时间:2023-12-02 07:29:41 29 4
gpt4 key购买 nike

我有 Spark 在集群中运行(远程)

如何使用spark-submit将应用程序提交到具有以下场景的远程集群:

  1. spark-submit 通过camel 作为命令执行

  2. 应用程序在自己的容器中运行。

来自以下链接:

https://github.com/mvillarrealb/docker-spark-cluster

https://github.com/big-data-europe/docker-spark

我们可以提交 Spark 应用程序,但我们已将文件和 jar 复制到卷中。

如何避免这种情况?

有什么办法吗?

最佳答案

最简单的方法是使用在 Spark 主节点上运行的 livy Rest 服务器。这允许您仅通过在本地打包作业并使用提交休息 API 来提交作业。 Livy 现在默认与许多 Spark 云提供商一起提供。 (AWS、Azure、Hortonworks)请参阅doc

我仍然相信只需在本地安装相同的 Spark 驱动程序就可以提交。然而我放弃了这个。特别是如果使用 yarn ,我找不到正确的配置以及要连接的端口。

实际上,这也不是一个好的操作设置,因为您的计算机需要参与集群网络或打开特定端口。并且您的本地计算机也开始参与 Spark 协议(protocol)。

将代码部署到集群上的临时位置,然后使用 Spark-submit 或使用定义良好的 livy api 端点是一个好方法。

有关集群内连接的评论的更新:

在一组 Spark 机器和每台机器上安装的适当驱动程序中,可以从任何机器提交作业。此外,在集群内,管理员将端口向所有参与的计算机开放。

spark-submit 命令有一个 master-url 参数。该url必须使用spark协议(protocol):

./bin/spark-submit \
--class <main-class \
--master <master-url> \
<application-jar>

没有dns和yarn,主url看起来像这样 - Spark://192.168.1.1:7077(spark协议(protocol),主节点/虚拟机的IP,端口)

我已经使用 docker-compose 进行了类似的设置。 https://github.com/dre-hh/spark_playground

  • 有 3 种类型的节点具有自记录名称: spark-master , spark-workerspark-submit .
  • appcode 仅由build . 部署到spark-submit 节点。命令。这是唯一在本地构建的 docker 镜像。它继承自 Spark-Image。因此,它具有与其他节点完全相同的 Spark 驱动器。另外它会复制所有项目将 git 存储库(包括作业)中的代码复制到节点上的特定文件夹中。
  • 所有其他节点都是根据官方镜像构建的docker 注册表并保持不变(某些配置除外)。
  • 最后可以从spark-submit节点使用spark-submit。然而在此示例中,我刚刚启动了交互式 jupyter notebook并从应用代码本身连接。

注意:docker-compose 自动附带 dns,因此我不必通过 ip 引用节点。

 # "spark-master" will automatically resolve to the ip of the master node because of docker-compose naming convention and dns rules
pyspark.SparkContext(master="spark://spark-master:7077", appName="Pi")

https://github.com/dre-hh/spark_playground/blob/master/docker-compose.yml#L48

关于docker - 如何远程运行spark-submit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59090746/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com