Как я понимаю, это зависит от того, какой режим вы будете использовать.
Вы можете использовать Cluster Mode
для запуска Spark Pi.
$ ./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
Spark master, заданный либо путем передачи аргумента командной строки --master
в spark-submit
, либо путем установки spark.master
в конфигурации приложения, должен быть URL-адресом в формате k8s://<api_server_host>:<k8s-apiserver-port>
. Порт всегда должен быть указан, даже если это HTTPS-порт 443. Префикс главной строки с k8s://
приведет к запуску приложения Spark в кластере Kubernetes, а с сервером API будет установлено соединение api_server_url
. Если в URL не указан протокол HTTP, по умолчанию используется значение https
. Например, установка мастера на k8s://example.com:443
эквивалентна установке на k8s://https://example.com:443
, но для подключения без TLS на другом порту мастер будет установлен на k8s://http://example.com:8080
.
В режиме Kubernetes, имя приложения Spark, которое задается spark.app.name
или аргументом --name
для spark-submit
, по умолчанию используется для именования ресурсов Kubernetes, созданных как драйверы и исполнители. Таким образом, имена приложений должны состоять из строчных букв c символов, -
и .
и должны начинаться и заканчиваться символом алфавита c.
Вы также можете настроить Client Mode
Начиная с Spark 2.4.0, можно запускать приложения Spark на Kubernetes в режиме клиента. Когда ваше приложение работает в режиме клиента, драйвер может работать внутри модуля или на физическом хосте. При запуске приложения в режиме клиента рекомендуется учитывать следующие факторы:
Работа в режиме клиента
Исполнители Spark должны иметь возможность подключаться к драйверу Spark через имя хоста и порт это маршрутизируемый от исполнителей Spark. Конкретная c сетевая конфигурация, которая потребуется Spark для работы в режиме клиента, зависит от конфигурации. Если вы запускаете свой драйвер в модуле Kubernetes, вы можете использовать безголовый сервис , чтобы ваш модуль драйвера мог маршрутизироваться от исполнителей по стабильному имени хоста. При развертывании вашей автономной службы убедитесь, что селектор меток службы будет соответствовать только пакету драйвера и никаким другим пакетам; Рекомендуется назначить вашему модулю драйвера достаточно уникальную метку и использовать эту метку в селекторе меток службы безголового доступа. Укажите имя хоста драйвера через spark.driver.host
, а порт вашего драйвера искры - spark.driver.port
. ...
Вся документация, касающаяся запуска Spark в Kubernetes, доступна здесь .
Также есть хорошее объяснение, данное Gigaspaces о Работа в Spark в Куберне