Управление заданиями Spark
Создать задание
Важно
Задание будет запущено автоматически после его создания.
Чтобы создать задание:
-
Перейдите на страницу каталога
и выберите сервис 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.cloud.yandex.net: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:///<путь_к_файлу>Бакет 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. - Нажмите на имя нужного кластера и выберите вкладку Задания.
- Нажмите на имя нужного задания.
- В правом верхнем углу страницы нажмите кнопку Отменить.
- В открывшемся окне выберите Отменить задание.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы отменить задание:
-
Посмотрите описание команды CLI для отмены задания:
yc managed-spark job cancel --help -
Отмените задание, выполнив команду:
yc managed-spark job cancel <имя_или_идентификатор_задания> \ --cluster-id <идентификатор_кластера>Идентификатор кластера можно получить со списком кластеров в каталоге.
Имя и идентификатор задания можно получить со списком заданий в кластере.
-
Получите 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.cloud.yandex.net:443 \ yandex.cloud.spark.v1.JobService.CancelИдентификатор кластера можно получить со списком кластеров в каталоге, идентификатор задания — со списком заданий в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Получить список заданий
- Перейдите на страницу каталога
и выберите сервис Managed Service for Apache Spark. - Нажмите на имя нужного кластера и выберите вкладку Задания.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы получить список заданий кластера:
-
Посмотрите описание команды CLI для получения списка заданий:
yc managed-spark job list --help -
Получите список заданий, выполнив команду:
yc managed-spark job list \ --cluster-id <идентификатор_кластера>Идентификатор кластера можно получить со списком кластеров в каталоге.
-
Получите 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.cloud.yandex.net:443 \ yandex.cloud.spark.v1.JobService.ListИдентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Получить общую информацию о задании
- Перейдите на страницу каталога
и выберите сервис Managed Service for Apache Spark. - Нажмите на имя нужного кластера и выберите вкладку Задания.
- Нажмите на имя нужного задания.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы получить информацию о задании:
-
Посмотрите описание команды CLI для получения информации о задании:
yc managed-spark job get --help -
Получите информацию о задании, выполнив команду:
yc managed-spark job get <идентификатор_задания> \ --cluster-id <идентификатор_кластера>Идентификатор кластера можно получить со списком кластеров в каталоге.
Идентификатор задания можно получить со списком заданий в кластере.
-
Получите 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.cloud.yandex.net:443 \ yandex.cloud.spark.v1.JobService.GetИдентификатор кластера можно получить со списком кластеров в каталоге, идентификатор задания — со списком заданий в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Получить логи выполнения задания
Важно
Чтобы получать логи выполнения заданий, включите запись логов в кластере при его создании.
- Перейдите на страницу каталога
и выберите сервис Managed Service for Apache Spark. - Нажмите на имя нужного кластера и выберите вкладку Задания.
- Нажмите на имя нужного задания.
- В поле Логи выполнения задания нажмите на ссылку.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы получить логи выполнения задания:
-
Посмотрите описание команды CLI для получения логов задания:
yc managed-spark job log --help -
Получите логи задания, выполнив команду:
yc managed-spark job log <идентификатор_задания> \ --cluster-id <идентификатор_кластера>Идентификатор кластера можно получить со списком кластеров в каталоге.
Идентификатор задания можно получить со списком заданий в кластере.
Чтобы получить логи нескольких заданий, перечислите их идентификаторы через пробел, например:
yc managed-spark job log c9q9veov4uql******** c9qu8uftedte******** \ --cluster-id c9q8ml85r1oh********
-
Получите 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.cloud.yandex.net:443 \ yandex.cloud.spark.v1.JobService.ListLogИдентификатор кластера можно запросить со списком кластеров в каталоге, идентификатор задания — со списком заданий в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.