Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В пакетной службе Azure задача представляет собой единицу вычислений. Задание представляет собой набор таких задач. Дополнительные сведения о заданиях и задачах, а также о том, как они используются в рабочем процессе пакетной службы Azure, описаны ниже.
Работы
Задание представляет собой набор задач. It manages how computation is performed by its tasks on the compute nodes in a pool.
Задание указывает пул, в котором будет выполняться работа. Вы можете создавать отдельный пул для каждого задания или использовать один пул для множества заданий. Кроме того, вы можете создавать пул для каждого задания, связанного с расписанием заданий, или один пул для всех заданий, связанных с расписанием заданий.
приоритет задания
You can assign an optional job priority to jobs that you create. Служба Batch использует значение приоритета задания для определения порядка планирования всех задач в задании в каждом пуле.
Вы можете изменить приоритет задания, вызвав операцию обновления свойств задания в REST пакетной службы или изменив значение CloudJob.Priority в .NET пакетной службы. Значения приоритета варьируются от -1000 (самый низкий приоритет) до +1000 (самый высокий приоритет).
В пределах одного пула задания с высоким приоритетом имеют преимущество при планировании относительно заданий с низким приоритетом. Задачи в заданиях с более низким приоритетом, которые уже выполняются, не будут вытесняться задачами из заданий с более высоким приоритетом. Задания с одинаковым уровнем приоритета имеют одинаковую вероятность назначения, и порядок выполнения таких задач не определен.
Задание с высоким приоритетом, которое выполняется в одном пуле, не влияет на планирование заданий в отдельном пуле или другой учетной записи Batch. Приоритет задания не применяется к автопулам, которые создаются при отправке заданий.
Ограничения заданий
You can use job constraints to specify certain limits for your jobs:
- Вы можете установить максимальное время на системных часах, чтобы, если задание выполняется дольше указанного времени, оно и все его задачи были завершены.
- В качестве ограничения можно указать максимальное число повторных попыток задачи, а также то, следует ли пытаться повторно выполнить задачу (всегда или никогда). Retrying a task means that if the task fails, it will be requeued to run again.
Задачи диспетчера заданий и их автоматическое завершение
Задачи к заданию может добавлять клиентское приложение. Кроме того, можно настроить задачу диспетчера заданий. Задача диспетчера заданий содержит всю информацию для создания необходимых задач в рамках задания. Эту задачу выполняет один из вычислительных узлов пула. Задача диспетчера заданий обрабатывается системой Batch специфически: она помещается в очередь как только работа создается и перезапускается, если происходит сбой. Задача диспетчера заданий необходима для заданий, создаваемых согласно расписанию заданий, так как это единственный способ определить задачи перед созданием экземпляра задания.
По умолчанию задания остаются в активном состоянии после выполнения всех задач в задании. Это поведение можно изменить, чтобы задание автоматически завершалось после выполнения всех входящих в него задач. Следует присвоить свойству onAllTasksComplete (OnAllTasksComplete в Batch .NET) значение terminatejob
*`, чтобы автоматически завершить задание, когда все его задачи будут в состоянии завершения.
The Batch service considers a job with no tasks to have all of its tasks completed. Поэтому этот параметр чаще всего используется с задачами диспетчера заданий. Если вы хотите использовать автоматическое завершение заданий без диспетчера заданий, необходимо сначала присвоить свойству onAllTasksComplete нового задания значение noaction
. Значение terminatejob
*` следует присваивать этому свойству только после добавления всех задач в задание.
Запланированные задания
Расписания заданий позволяют создавать в пакетной службе повторяющиеся задания. Расписание заданий определяет время запуска заданий и параметры для запуска этих заданий. Вы можете указать период действия задания, то есть с какого момента и в течение какого времени служба будет применять это расписание, а также частоту выполнения заданий в этот период.
Задачи
Задача представляет собой единицу вычисления, которая связана с заданием It runs on a node. Задачи назначаются узлу для выполнения или ставятся в очередь, пока не освободится какой-либо узел. Говоря простыми словами, задача запускает одну или несколько программ или сценариев на вычислительном узле, чтобы выполнить необходимую работу.
При создании задачи можно указать следующее:
The command line for the task. Это командная строка, которая запускает приложение или сценарий на вычислительном узле.
It is important to note that the command line does not run under a shell. Therefore, it cannot natively take advantage of shell features like environment variable expansion (this includes the
PATH
). Чтобы воспользоваться этими функциями, необходимо вызвать оболочку в командной строке. Это можно сделать путем запускаcmd.exe
на узлах Windows или/bin/sh
на узлах Linux.cmd /c MyTaskApplication.exe %MY_ENV_VAR%
/bin/sh -c MyTaskApplication $MY_ENV_VAR
Если вашим задачам необходимо запустить приложение или скрипт, который отсутствует в переменных среды узла
PATH
или не упоминается в них, вызовите оболочку явно в командной строке задачи.Файлы ресурсов, которые содержат данные для обработки. Эти файлы автоматически копируются в узел из хранилища Blob в учетной записи Azure Storage перед выполнением командной строки задачи. Дополнительные сведения см. в разделах Задача запуска и Файлы и каталоги.
The environment variables that are required by your application. Дополнительные сведения см. в разделе Параметры среды для задач.
Ограничения, в рамках которых должна выполняться задача. Например, может быть задано максимальное время на выполнение задачи, максимальное количество повторных попыток выполнить задачу, завершенную сбоем, и максимальное время хранения файлов в рабочем каталоге задачи.
Пакеты приложений для развертывания на вычислительном узле, на котором запланировано выполнение задачи. Пакеты приложений обеспечивают упрощенное развертывание и управление версиями приложений, выполняемых вашими задачами. Пакеты приложений уровня задач особенно полезны в средах с общим пулом, где различные задания выполняются в одном пуле, который не удаляется по завершении задания. Если задание содержит меньше задач, чем число узлов в пуле, пакеты приложений задач помогут минимизировать объем передаваемых данных, так как приложение развертывается только на узлах, на которых выполняются задачи.
Ссылка на образ контейнера в Docker Hub или в частном реестре и дополнительные параметры для создания контейнера Docker, в котором выполняется задача на узле. Эти сведения указываются, только если пул настроен в конфигурации контейнера.
Примечание.
Максимальное время существования задачи от ее добавления к заданию до завершения составляет 180 дней. Завершенные задачи хранятся в течение 7 дней. Данные для задач, которые не были завершены в течение максимального времени существования, недоступны.
Помимо задач, которые можно определить для вычислений на узле, пакетная служба выполняет несколько специальных задач.
- Задача запуска
- Задача диспетчера заданий
- Job preparation and release tasks
- Multi-instance tasks
- Зависимости задачи
Начать задание
Связав задачу запуска с пулом, можно подготовить операционную среду на его узлах. Например, вы можете выполнять такие действия, как установка приложений, используемых вашими задачами, или запуск фоновых процессов. The start task runs every time a node starts, for as long as it remains in the pool. This includes when the node is first added to the pool and when it is restarted or reimaged.
Задача запуска особенно полезна тем, что она может содержать все сведения для настройки вычислительных узлов и установки приложений, которые нужны для выполнения задач. Таким образом, для увеличения числа узлов в пуле достаточно задать новую целевую численность узлов. Задача запуска предоставляет пакетной службе сведения, необходимые для настройки новых узлов и подготовки их к выполнению задач.
Для этой задачи, как для любой задачи пакетной службы Azure, кроме исполняемой командной строки можно указать список файлов ресурсов, которые хранятся в службе хранилища Azure. Служба Batch сначала скопирует ресурсные файлы на узел из хранилища Azure, а затем выполнит команду в командной строке. Список файлов для задачи запуска пула обычно содержит приложение задач или его зависимости.
В задаче запуска также могут содержаться справочные данные, которые будут использоваться всеми задачами, выполняемыми на вычислительном узле. Например, командная строка стартовой задачи может выполнить операцию robocopy
по копированию файлов приложения (которые были указаны как файлы ресурсов и загружены на узел) из рабочего каталога стартовой задачи в общую папку, а затем выполнить запуск MSI-файла или setup.exe
.
Как правило, пакетная служба должна ожидать завершения задачи запуска, прежде чем считать узел готовым к назначению задач. Тем не менее, при необходимости, вы можете настроить это по-другому.
Если задача запуска на узле пула завершится сбоем, этот сбой отобразится в параметре состояния узла. При этом узлу не будут назначаться задачи. Задача запуска может завершиться сбоем, если не удастся скопировать файлы ресурсов из хранилища или если процесс, запущенный командной строкой задачи запуска, вернет ненулевой код завершения.
При добавлении или обновлении задачи запуска для существующего пула необходимо перезапустить его вычислительные узлы, чтобы применить к ним задачу запуска.
Примечание.
Batch limits the total size of a start task, which includes resource files and environment variables. Если вам нужно сократить размер задачи запуска, можно использовать один из двух подходов:
Вы можете использовать пакеты приложений для распространения приложений или данных на каждом узле в вашем пуле Batch. Дополнительные сведения о пакетах приложений см. в статье Развертывание приложений на вычислительных узлах с помощью пакетов приложений пакетной службы.
Можно вручную создать ZIP-архив с файлами приложения. Upload your zipped archive to Azure Storage as a blob. Укажите ZIP-архив в качестве файла ресурсов для задачи запуска. Перед использованием командной строки для задачи запуска распакуйте архив из командной строки.
Для распаковки архива можно использовать средство архивации по своему усмотрению. Средство, которое использовалось для распаковки архива, необходимо указать как файл ресурсов для задачи запуска.
Задача диспетчера заданий
Задача диспетчера заданий обычно используется для управления заданием и/или отслеживания его выполнения. Например, задачи диспетчера заданий часто применяются, чтобы создать и отправить задачи для задания, определить дополнительные задачи, которые нужно выполнить, и фиксировать завершение задания.
Но задача диспетчера заданий не ограничивается такими действиями. Это полнофункциональная задача, которая может выполнять любые действия, требуемые в рамках задания. Например, задача диспетчера заданий может скачать файл, указанный в качестве параметра, проанализировать содержимое этого файла и в зависимости от содержимого отправить на выполнение дополнительные задачи.
Задача диспетчера заданий запускается перед выполнением всех других задач. Она предоставляет следующие возможности.
- It is automatically submitted as a task by the Batch service when the job is created.
- It is scheduled to execute before the other tasks in a job.
- Its associated node is the last to be removed from a pool when the pool is being downsized.
- Его завершение может быть связано с завершением всех задач в работе.
- При перезапуске задача диспетчера заданий получает наивысший приоритет. If an idle node is not available, the Batch service might terminate one of the other running tasks in the pool to make room for the job manager task to run.
- Задача, управляемая диспетчером заданий, в одном задании не имеет приоритета над задачами других заданий. Across jobs, only job-level priorities are observed.
Job preparation and release tasks
Batch provides job preparation tasks for pre-job execution setup, and job release tasks for post-job maintenance or cleanup.
A job preparation task runs on all compute nodes that are scheduled to run tasks, before any of the other job tasks are executed. Например, вы можете применить задачу подготовки задания для копирования данных, которые используются всеми задачами, но только в рамках одного задания.
When a job has completed, a job release task runs on each node in the pool that executed at least one task. For example, a job release task can delete data that was copied by the job preparation task, or it can compress and upload diagnostic log data.
Задачи подготовки и завершения задания позволяют указать командную строку, которая будет выполняться при вызове задачи. Они предоставляют такие возможности, как загрузка файлов, выполнение с повышенными правами, пользовательские переменные среды, максимальная продолжительность выполнения, число повторных попыток и время хранения файла.
Дополнительные сведения о задачах подготовки и завершения заданий см. в статье Выполнение задач подготовки и завершения заданий на вычислительных узлах пакетной службы Azure.
Multi-instance task
Задача с несколькими экземплярами — это задача, которая может выполняться на нескольких вычислительных узлах одновременно. При помощи многозадачности, можно использовать высокопроизводительные вычислительные сценарии, требующие совместного задействования группы вычислительных узлов для обработки одной рабочей нагрузки, например, как в интерфейсе передачи сообщений (MPI).
For a detailed discussion on running MPI jobs in Batch by using the Batch .NET library, check out Use multi-instance tasks to run Message Passing Interface (MPI) applications in Azure Batch.
Зависимости задач
Зависимости задач, как можно понять из названия, позволяют настроить выполнение задачи в зависимости от предварительного завершения других задач. Эта функция обеспечивает поддержку в ситуациях, когда "подчиненная" задача использует выходные данные "вышестоящей" задачи или когда вышестоящая задача выполняет инициализацию, необходимую для подчиненных задач.
To use this feature, you must first enable task dependencies on your Batch job. Затем для каждой задачи, зависящей от другой (или нескольких других), укажите задачи, от которых она зависит.
С помощью зависимостей задач можно настраивать различные сценарии, например:
- Задача taskB зависит от задачи taskA (выполнение задачи taskB не начнется, пока не завершится выполнение задачи taskA).
- Задача taskC зависит от задач taskA и taskB.
- taskD depends on a range of tasks, such as tasks 1 through 10, before it executes.
Дополнительные сведения см. в разделе 'Зависимости задач' в Azure Batch и в примере кода TaskDependencies в репозитории azure-batch-samples на GitHub.
Параметры среды для задач
Каждая задача, выполняемая пакетной службой, имеет доступ к переменным среды, заданным на вычислительных узлах. Сюда входят переменные среды, определенные пакетной службой, и пользовательские переменные среды, которые вы можете определить для задач. Приложения и скрипты, выполняемые с помощью задач, получают доступ к переменным среды во время выполнения.
Пользовательские переменные среды можно задать на уровне задачи или задания, задав свойство параметров среды для этих объектов. Дополнительные сведения см. в разделе «Добавление задачи к заданию» (пакетная служба REST) или в свойствах CloudTask.EnvironmentSettings и CloudJob.CommonEnvironmentSettings в пакетной службе .NET.
Ваше клиентское приложение или служба могут получить переменные среды задачи, как определенные службой, так и пользовательские, с помощью операции Get information about a task (Batch REST) или через доступ к свойству CloudTask.EnvironmentSettings (Batch .NET). Процессы, которые выполняются на вычислительном узле, могут обращаться к этим и другим переменным среды узла, например с помощью привычного синтаксиса %VARIABLE_NAME%
в Windows или $VARIABLE_NAME
в Linux.
Вы можете найти список всех служебных переменных среды в разделе Переменные среды вычислительного узла.
Следующие шаги
- Узнайте подробнее о файлах и каталогах.