BatchJobPreparationTask interface
Задача подготовки заданий, выполняемая перед любыми задачами задания на любом заданном вычислительном узле. Вы можете использовать подготовку задания для подготовки узла для выполнения задач для задания. Действия, часто выполняемые в процессе подготовки задания, включают в себя скачивание общих файлов ресурсов, используемых всеми задачами в задании. Задача подготовки заданий может скачать эти общие файлы ресурсов в общее расположение на узле. (AZ_BATCH_NODE_ROOT_DIR\shared) или запуск локальной службы на узле, чтобы все задачи этого задания могли взаимодействовать с ним. Если задача подготовки заданий завершается сбоем (т. е. исчерпает количество повторных попыток перед выходом с кодом выхода 0), пакетная служба не будет запускать задачи этого задания на узле. Вычислительный узел остается неисправным для выполнения задач этого задания, пока он не будет переимычен. Вычислительный узел остается активным и может использоваться для других заданий. Задача подготовки заданий может выполняться несколько раз на одном узле. Поэтому необходимо написать задачу подготовки заданий для обработки повторного выполнения. Если узел перезагружается, задача подготовки заданий выполняется снова на вычислительном узле перед планированием любой другой задачи задания, если повторно запуститьOnNodeRebootAfterSuccess или если задача подготовки задания ранее не завершена. Если узел переосмыслен, задача подготовки заданий выполняется снова перед планированием любой задачи задания. Пакетная служба будет повторять задачи при активации операции восстановления на узле. Примеры операций восстановления включают (но не ограничиваются) при перезагрузке неработоспособного узла или вычислительном узле исчезли из-за сбоя узла. Повторные попытки из-за операций восстановления не учитываются и не учитываются для maxTaskRetryCount. Даже если значение maxTaskRetryCount равно 0, может произойти внутренняя повторная попытка из-за операции восстановления. Из-за этого все задачи должны быть идемпотентными. Это означает, что задачи должны терпеть прерывание и перезапуск без повреждения или дублирования данных. Рекомендуется использовать определенную форму контрольных точек для длительных задач.
Свойства
| command |
Командная строка задачи подготовки к работе. Командная строка не выполняется под оболочкой и поэтому не может воспользоваться преимуществами функций оболочки, таких как расширение переменной среды. Если вы хотите воспользоваться такими возможностями, стоит вызвать оболочку в командной строке, например, используя "cmd /c MyCommand" в Windows или "/bin/sh -c MyCommand" в Linux. Если командная строка ссылается на пути к файлам, она должна использовать относительный путь (относительно рабочего каталога задачи) или использовать указанную пакетную переменную среды (https://learn.microsoft.com/azure/batch/batch-compute-node-environment-variables). |
| constraints | Ограничения, применяемые к заданию подготовки к работе. |
| container |
Настройки контейнера, в котором выполняется задача подготовки задания. Когда это указано, все каталоги рекурсивно ниже AZ_BATCH_NODE_ROOT_DIR (корня пакетная служба Azure каталогов на узле) отображаются в контейнер, все переменные среды задачи отображаются в контейнер, и в контейнере выполняется командная строка задачи. Файлы, созданные в контейнере вне AZ_BATCH_NODE_ROOT_DIR, могут не отражаться на хост-диске, что означает, что API пакетных файлов не смогут получить доступ к этим файлам. |
| environment |
Список настроек переменных среды для задачи подготовки к работе. |
| id | Строка, которая уникально идентифицирует задачу подготовки к работе внутри работы. ID может содержать любую комбинацию буквенно-цифровых символов, включая дефисы и подчёркивания, и не может содержать более 64 символов. Если вы не указываете это свойство, пакетный сервис присваивает по умолчанию значение 'jobprepared'. Ни одна другая задача на работе не может иметь такой же идентификатор, как задание подготовки к работе. Если вы пытаетесь отправить задачу с тем же идентификатором, пакетная служба отклоняет запрос с кодом ошибки TaskIdSameAsJobPreparationTask; если вы вызываете REST API напрямую, HTTP-код статуса — 409 (Конфликт). |
| rerun |
Должен ли пакетный сервис повторно запускать задачу подготовки задания после перезагрузки вычислительного узла. Задача подготовки задания всегда выполняется повторно, если вычислительный узел был пересоздан или если задача подготовки задания не завершилась (например, если перезагрузка произошла во время выполнения задачи). Поэтому всегда нужно писать задание на подготовку к работе, чтобы оно было идемпотентным и правильно себя ведёт при многократном выполнении. Значение по умолчанию — true. |
| resource |
Список файлов, которые служба пакетной службы скачивает на вычислительный узел перед выполнением командной строки. Файлы, перечисленные в этом элементе, находятся в рабочем каталоге задачи. Существует максимальный размер списка файлов ресурсов. При превышении максимального размера запрос завершится ошибкой, и код ошибки ответа будет RequestEntityTooLarge. В этом случае коллекция ResourceFiles должна быть уменьшена. Это можно сделать с помощью .zip файлов, пакетов приложений или контейнеров Docker. |
| user |
Идентификатор пользователя, под которым выполняется задача подготовки задания. Если задача опущена, она выполняется как неадминистративный пользователь, уникальный для задачи на вычислительных узлах Windows, либо как неадминистративный пользователь, уникальный для пула на вычислительных узлах Linux. |
| wait |
Стоит ли пакетному сервису ждать успешного завершения задачи подготовки задания, прежде чем планировать другие задачи работы на вычислительном узле. Задание по подготовке работы успешно завершено, если оно выходит с кодом выхода 0. Если это верно и задача подготовки задания не выполняется на узле, пакетная служба повторяет задачу подготовки задания до максимального количества повторных попыток (как указано в элементе constraints). Если задача всё ещё не была успешно завершена после всех повторных попыток, то пакетная служба не будет планировать задачи задачи узлу. Узел остаётся активным и имеет право выполнять задачи других задач. Если это ошибка, пакетная служба не будет ждать завершения задачи подготовки работы. В этом случае другие задачи задачи могут начать выполняться на вычислительном узле, пока задача подготовки задания ещё выполняется; и даже если задача подготовки задания не выполняется, новые задачи продолжат планироваться на вычислительном узле. Значение по умолчанию — true. |
Сведения о свойстве
commandLine
Командная строка задачи подготовки к работе. Командная строка не выполняется под оболочкой и поэтому не может воспользоваться преимуществами функций оболочки, таких как расширение переменной среды. Если вы хотите воспользоваться такими возможностями, стоит вызвать оболочку в командной строке, например, используя "cmd /c MyCommand" в Windows или "/bin/sh -c MyCommand" в Linux. Если командная строка ссылается на пути к файлам, она должна использовать относительный путь (относительно рабочего каталога задачи) или использовать указанную пакетную переменную среды (https://learn.microsoft.com/azure/batch/batch-compute-node-environment-variables).
commandLine: string
Значение свойства
string
constraints
Ограничения, применяемые к заданию подготовки к работе.
constraints?: BatchTaskConstraints
Значение свойства
containerSettings
Настройки контейнера, в котором выполняется задача подготовки задания. Когда это указано, все каталоги рекурсивно ниже AZ_BATCH_NODE_ROOT_DIR (корня пакетная служба Azure каталогов на узле) отображаются в контейнер, все переменные среды задачи отображаются в контейнер, и в контейнере выполняется командная строка задачи. Файлы, созданные в контейнере вне AZ_BATCH_NODE_ROOT_DIR, могут не отражаться на хост-диске, что означает, что API пакетных файлов не смогут получить доступ к этим файлам.
containerSettings?: BatchTaskContainerSettings
Значение свойства
environmentSettings
Список настроек переменных среды для задачи подготовки к работе.
environmentSettings?: EnvironmentSetting[]
Значение свойства
id
Строка, которая уникально идентифицирует задачу подготовки к работе внутри работы. ID может содержать любую комбинацию буквенно-цифровых символов, включая дефисы и подчёркивания, и не может содержать более 64 символов. Если вы не указываете это свойство, пакетный сервис присваивает по умолчанию значение 'jobprepared'. Ни одна другая задача на работе не может иметь такой же идентификатор, как задание подготовки к работе. Если вы пытаетесь отправить задачу с тем же идентификатором, пакетная служба отклоняет запрос с кодом ошибки TaskIdSameAsJobPreparationTask; если вы вызываете REST API напрямую, HTTP-код статуса — 409 (Конфликт).
id?: string
Значение свойства
string
rerunOnNodeRebootAfterSuccess
Должен ли пакетный сервис повторно запускать задачу подготовки задания после перезагрузки вычислительного узла. Задача подготовки задания всегда выполняется повторно, если вычислительный узел был пересоздан или если задача подготовки задания не завершилась (например, если перезагрузка произошла во время выполнения задачи). Поэтому всегда нужно писать задание на подготовку к работе, чтобы оно было идемпотентным и правильно себя ведёт при многократном выполнении. Значение по умолчанию — true.
rerunOnNodeRebootAfterSuccess?: boolean
Значение свойства
boolean
resourceFiles
Список файлов, которые служба пакетной службы скачивает на вычислительный узел перед выполнением командной строки. Файлы, перечисленные в этом элементе, находятся в рабочем каталоге задачи. Существует максимальный размер списка файлов ресурсов. При превышении максимального размера запрос завершится ошибкой, и код ошибки ответа будет RequestEntityTooLarge. В этом случае коллекция ResourceFiles должна быть уменьшена. Это можно сделать с помощью .zip файлов, пакетов приложений или контейнеров Docker.
resourceFiles?: ResourceFile[]
Значение свойства
userIdentity
Идентификатор пользователя, под которым выполняется задача подготовки задания. Если задача опущена, она выполняется как неадминистративный пользователь, уникальный для задачи на вычислительных узлах Windows, либо как неадминистративный пользователь, уникальный для пула на вычислительных узлах Linux.
userIdentity?: UserIdentity
Значение свойства
waitForSuccess
Стоит ли пакетному сервису ждать успешного завершения задачи подготовки задания, прежде чем планировать другие задачи работы на вычислительном узле. Задание по подготовке работы успешно завершено, если оно выходит с кодом выхода 0. Если это верно и задача подготовки задания не выполняется на узле, пакетная служба повторяет задачу подготовки задания до максимального количества повторных попыток (как указано в элементе constraints). Если задача всё ещё не была успешно завершена после всех повторных попыток, то пакетная служба не будет планировать задачи задачи узлу. Узел остаётся активным и имеет право выполнять задачи других задач. Если это ошибка, пакетная служба не будет ждать завершения задачи подготовки работы. В этом случае другие задачи задачи могут начать выполняться на вычислительном узле, пока задача подготовки задания ещё выполняется; и даже если задача подготовки задания не выполняется, новые задачи продолжат планироваться на вычислительном узле. Значение по умолчанию — true.
waitForSuccess?: boolean
Значение свойства
boolean