我是否需要在所有工作计算机上都具有Spark才能运行spark-submit并在同一工作计算机内的k8s集群上运行spark作业?

问题描述 投票:0回答:1

我有一个k8s集群。现在,我想在k8s集群上部署spark作业,我想知道是否需要在所有辅助计算机上安装和配置spark。

apache-spark kubernetes spark-submit
1个回答
0
投票
据我了解,这取决于您将使用哪种模式。

您可以使用Cluster Mode启动Spark Pi。

Cluster Mode

通过将$ ./bin/spark-submit \ --master k8s://https://<k8s-apiserver-host>:<k8s-apiserver-port> \ --deploy-mode cluster \ --name spark-pi \ --class org.apache.spark.examples.SparkPi \ --conf spark.executor.instances=5 \ --conf spark.kubernetes.container.image=<spark-image> \ local:///path/to/examples.jar 命令行参数传递给--master或通过在应用程序的配置中设置spark-submit来指定的Spark master,必须是格式为spark.master的URL。即使使用HTTPS端口443,也必须始终指定该端口。使用k8s://<api_server_host>:<k8s-apiserver-port>前缀为主字符串将导致Spark应用程序在Kubernetes集群上启动,并通过k8s://与API服务器联系。如果URL中未指定HTTP协议,则默认为api_server_url。例如,将主机设置为https等效于将其设置为k8s://example.com:443,但是要在其他端口上不使用TLS进行连接的情况下,主机将设置为k8s://https://example.com:443

在Kubernetes模式下,默认情况下使用k8s://http://example.com:8080spark.app.name--name参数指定的Spark应用程序名称来命名创建的Kubernetes资源,例如驱动程序和执行程序。因此,应用程序名称必须由小写字母数字字符spark-submit-组成,并且必须以字母数字字符开头和结尾。

您也可以设置.

从Spark 2.4.0开始,可以在客户端模式下在Kubernetes上运行Spark应用程序。当您的应用程序在客户端模式下运行时,驱动程序可以在pod内或物理主机上运行。在客户端模式下运行应用程序时,建议考虑以下因素:

客户端模式网络

Spark执行程序必须能够通过主机名和可从Spark执行程序路由的端口连接到Spark驱动程序。 Spark在客户端模式下工作所需的特定网络配置将因设置而异。如果您在Kubernetes Pod中运行驱动程序,则可以使用Client Mode允许通过稳定的主机名从执行程序路由您的驱动程序Pod。部署无头服务时,请确保服务的标签选择器仅与驱动程序容器匹配,而与其他容器不匹配;建议为您的驾驶舱分配足够唯一的标签,并在无头服务的标签选择器中使用该标签。通过Client Mode指定驱动程序的主机名,并将Spark驱动程序的端口指定为headless service。...

有关在Kubernetes上运行Spark的完整文档,spark.driver.host

spark.driver.port也对here给出了很好的解释

© www.soinside.com 2019 - 2024. All rights reserved.