Управление заданиями Spark
Примечание
Функциональность находится на стадии Preview.
Создать задание
Важно
Задание будет запущено автоматически после его создания.
Чтобы создать задание:
-
Перейдите на страницу каталога
и выберите сервис Managed Service for Apache Spark. -
Нажмите на имя нужного кластера и выберите вкладку Задания.
-
Нажмите кнопку Создать задание.
-
Укажите имя задания.
-
В поле Тип задания выберите
Spark
. -
В поле Основной JAR файл укажите путь к основному JAR-файлу приложения в формате:
Размещение файла Формат пути Файловая система инстанса file:///<путь_к_файлу>
Бакет Object Storage s3a://<имя_бакета>/<путь_к_файлу>
Интернет http://<путь_к_файлу>
илиhttps://<путь_к_файлу>
Допускается использование архивов стандартных для Linux форматов:
zip
,gz
,xz
,bz2
и т. д.Сервисному аккаунту кластера необходим доступ на чтение ко всем файлам в бакете. Пошаговые инструкции по настройке доступа к Object Storage приведены в разделе Редактирование ACL бакета.
-
В поле Основной класс укажите имя основного класса приложения.
-
Укажите аргументы задания.
Если аргумент, переменная или свойство состоит из нескольких частей, разделенных пробелом, указывайте каждую часть отдельно. При этом важно сохранить порядок объявления аргументов, переменных и свойств.
Например, аргумент
-n 1000
должен быть преобразован в два аргумента-n
и1000
, стоящих последовательно. -
(Опционально) Укажите пути к JAR-файлам, если они используются.
-
(Опционально) Задайте продвинутые настройки:
- Укажите пути к необходимым файлам и архивам.
- В поле Настройки укажите свойства компонентов в виде пар
ключ-значение
. - Укажите координаты используемых и исключаемых Maven-пакетов, а также URL дополнительных репозиториев для поиска пакетов.
-
Нажмите кнопку Создать задание.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом JobService.Create и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/spark/v1/job_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "name": "<имя_задания>", "spark_job": { "args": [ <список_аргументов> ], "jar_file_uris": [ <список_путей_к_JAR-файлам> ], "file_uris": [ <список_путей_к_файлам> ], "archive_uris": [ <список_путей_к_архивам> ], "properties": { <список_свойств> }, "main_jar_file_uri": "<путь_к_основному_JAR-файлу>", "main_class": "<имя_основного_класса>", "packages": [ <список_Maven-координат_пакетов> ], "repositories": [ <URL_репозиториев_для_поиска_пакетов> ], "exclude_packages": [ <список_Maven-координат_исключаемых_пакетов> ] } }' \ spark.api.yandexcloud.kz:443 \ yandex.cloud.spark.v1.JobService.Create
Где:
-
name
— имя Spark-задания. -
spark_job
— параметры Spark-задания:-
args
— аргументы задания. -
jar_file_uris
— пути к используемым JAR-файлам. -
file_uris
— пути к используемым файлам. -
archive_uris
— пути к используемым архивам. -
properties
— свойства компонентов в виде пар«ключ:значение»
. -
main_jar_file_uri
— путь к основному JAR-файлу приложения в формате:Размещение файла Формат пути Файловая система инстанса file:///<путь_к_файлу>
Распределенная файловая система кластера hdfs:///<путь_к_файлу>
Бакет Object Storage s3a://<имя_бакета>/<путь_к_файлу>
Интернет http://<путь_к_файлу>
илиhttps://<путь_к_файлу>
Допускается использование архивов стандартных для Linux форматов:
zip
,gz
,xz
,bz2
и т. д.Сервисному аккаунту кластера необходим доступ на чтение ко всем файлам в бакете. Пошаговые инструкции по настройке доступа к Object Storage приведены в разделе Редактирование ACL бакета.
-
main_class
— имя основного класса приложения. -
packages
— Maven-координаты JAR-файлов в форматеgroupId:artifactId:version
. -
repositories
— URL дополнительных репозиториев для поиска пакетов. -
exclude_packages
— Maven-координаты пакетов, которые нужно исключить, в форматеgroupId:artifactId
.
-
Идентификатор кластера можно получить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Отменить задание
Примечание
Задания в статусах ERROR
, DONE
или CANCELLED
отменить нельзя. Чтобы узнать статус задания, получите список заданий в кластере.
- Перейдите на страницу каталога
и выберите сервис Managed Service for Apache Spark. - Нажмите на имя нужного кластера и выберите вкладку Задания.
- Нажмите на имя нужного задания.
- В правом верхнем углу страницы нажмите кнопку Отменить.
- В открывшемся окне выберите Отменить задание.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом JobService.Cancel и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/spark/v1/job_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "job_id": "<идентификатор_задания>" }' \ spark.api.yandexcloud.kz:443 \ yandex.cloud.spark.v1.JobService.Cancel
Идентификатор кластера можно получить со списком кластеров в каталоге, идентификатор задания — со списком заданий в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Получить список заданий
- Перейдите на страницу каталога
и выберите сервис Managed Service for Apache Spark. - Нажмите на имя нужного кластера и выберите вкладку Задания.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом JobService.List и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/spark/v1/job_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>" }' \ spark.api.yandexcloud.kz:443 \ yandex.cloud.spark.v1.JobService.List
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Получить общую информацию о задании
- Перейдите на страницу каталога
и выберите сервис Managed Service for Apache Spark. - Нажмите на имя нужного кластера и выберите вкладку Задания.
- Нажмите на имя нужного задания.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом JobService.Get и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/spark/v1/job_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "job_id": "<идентификатор_задания>" }' \ spark.api.yandexcloud.kz:443 \ yandex.cloud.spark.v1.JobService.Get
Идентификатор кластера можно получить со списком кластеров в каталоге, идентификатор задания — со списком заданий в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Получить логи выполнения задания
Важно
Чтобы получать логи выполнения заданий, включите запись логов в кластере при его создании.
- Перейдите на страницу каталога
и выберите сервис Managed Service for Apache Spark. - Нажмите на имя нужного кластера и выберите вкладку Задания.
- Нажмите на имя нужного задания.
- В поле Логи выполнения задания нажмите на ссылку.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом JobService.ListLog и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/spark/v1/job_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "job_id": "<идентификатор_задания>" }' \ spark.api.yandexcloud.kz:443 \ yandex.cloud.spark.v1.JobService.ListLog
Идентификатор кластера можно запросить со списком кластеров в каталоге, идентификатор задания — со списком заданий в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.