Выполнение задач и добавление пакетов приложений
Параллельное выполнение задач с помощью REST API пакетной службы
Пакетная служба Azure использует параллельные задачи для разделения задач между вычислительными узлами. Пакетная служба Azure особенно хорошо подходит для выполнения крупномасштабных параллельных и высокопроизводительных пакетных заданий вычислений. Пакетная служба выполняет все необходимое, включая управление и планирование всех узлов и приложений, необходимых для запуска ваших сценариев.
При меньшем количестве узлов в пуле вы можете максимально использовать ресурсы, выполняя более одной задачи одновременно. Для некоторых рабочих нагрузок вы можете заметить сокращение времени выполнения задач и уменьшение затрат, если несколько задач совместно используют вычислительные узлы.
В некоторых сценариях может требоваться свести к минимуму передачу данных для задач, которые могут совместно использовать данные. Вы можете значительно снизить расходы на передачу данных, копируя общие данные на меньшее количество узлов и выполняя задачи параллельно в каждом узле. При этом вы экономите время, необходимое для передачи данных на все узлы, так как теперь большое количество будет совместно использовать данные.
Включение параллельного выполнения задач
Параллельное выполнение задач определяет количество задач, одновременно обрабатываемых одним узлом в одном пуле.
В пакетной службе параллельное выполнение задач управляется слотами. У задач есть свойство с именем RequiredSlots
, которое указывает, насколько ресурсоемкой является данная задача. Для ресурсоемких задач требуется больше слотов, чем для задач с низкими требованиями к ресурсам.
При создании пула вы указываете, сколько слотов задач доступно для каждого узла, устанавливая свойство taskSlotsPerNode
. Это свойство управляет интенсивностью ресурсов задач, которые могут выполняться одновременно на узле.
Например, если для свойства taskSlotsPerNode
пула установлено значение 16, то задачам, которые выполняются в данном узле параллельно, никогда не потребуется более 16 слотов. Этот параметр означает, например, следующее:
- Две задачи, требующие восьми слотов, могут выполняться одновременно, так как количество слотов равно 16 (2 * 8 = 16)
- Три задачи, требующие пяти слотов, могут выполняться одновременно, так как количество слотов меньше 16 (3 * 5 = 15)
- Пять задач, требующих четырех слотов, не могут выполняться одновременно, так как количество слотов превышает 16 (5 * 4 = 20)
Максимальное значение свойства taskSlotsPerNode
может быть в 4 раза больше количества виртуальных ЦП, имеющихся в узле. Чтобы узнать, сколько виртуальных ЦП доступно на узле, см. Размеры виртуальных машин в Azure.
Примечание.
После задания taskSlotsPerNode
свойства его нельзя изменить. Чтобы изменить его, придется создать новый пул.
RequiredSlots
Задайте свойство в зависимости от того, сколько ЦП или памяти требуется задача, или как требуется интенсивное выполнение операций ввода-вывода. Кроме того, при установке свойства taskSlotsPerNode
необходимо учитывать, сколько задач может выполняться одновременно без ухудшения времени выполнения задачи.
Добавление пакета приложения и запуск приложения-контейнера в пакетной службе Azure
Пакеты приложений
В пакетной службе Azure приложение ссылается на набор двоичных файлов с возможностью управления версиями, которые могут автоматически скачиваться на вычислительные узлы в пуле. Приложение содержит один пакет приложений или несколько, которые представляют разные версии приложения.
Пакеты приложений можно указывать на уровне пула или задачи. Пакеты приложений пула подходят, если все узлы в пуле выполняют задачи задания.
При создании пула можно указать несколько пакетов приложений. Приложения развертываются, когда узел присоединяется к пулу, и когда узел перезагружается/пересоздается. Чтобы установить новые пакеты в существующий пул, необходимо перезапустить его узлы.
Если вы решили развернуть пакет приложения на уровне задачи, это полезно в средах общего пула. В этих средах разные задания выполняются в одном пуле, и пул не удаляется после завершения задания. Если у вашего задания меньше задач, чем узлов в пуле, для максимального сокращения передачи данных можно использовать пакеты приложений задач, так как ваше приложение развертывается только в узлах, в которых выполняются задачи.
Управление пакетами приложений в учетной записи пакетной службы осуществляется на портале Azure или с помощью API-интерфейсов для управления пакетной службой. Чтобы использовать пакеты приложений, необходимо связать учетную запись хранения Azure с учетной записью пакетной службы. Пакетная служба использует связанную учетную запись хранения для хранения пакетов приложений. Мы рекомендуем вам создать учетную запись хранения специально для использования с вашей учетной записью пакетной службы.
Приложения контейнера
Контейнеры — это популярное средство упаковки и развертывания облачных приложений, а также управления ими. Служба "Экземпляры контейнеров Azure" — идеальное решение для любых сценариев, которые могут выполняться в изолированных контейнерах, включая простые приложения, автоматизацию задач и задания сборки.
Использование контейнеров предоставляет простой способ запуска задач пакетной службы без необходимости управлять средой и зависимостями. В контейнерах приложения развертываются в качестве упрощенных переносимых самодостаточных единиц, которые могут выполняться в нескольких разных средах. Задачи на основе контейнеров в пакетной службе также могут воспользоваться функциями задач, отличных отcontainer, включая пакеты приложений и управление файлами ресурсов и выходными файлами.
Вы можете создать пул с включенным контейнером с предварительно загруженным образом контейнера или без него. Процесс предварительной выборки позволяет предварительно загружать образы контейнеров из Docker Hub или другого реестра контейнеров (например, из Реестра контейнеров Azure) в Интернете.
Преимущество предварительной выборки образов контейнеров заключается в том, что при первом запуске задач им не нужно ждать загрузки образа контейнера. Конфигурация контейнера извлекает образы контейнеров на виртуальные машины при создании пула. Задачи, выполняющиеся в пуле, могут ссылаться на список образов контейнеров и параметры выполнения контейнера.