Azure Batch

image
Пару тижнів тому Microsoft анонсував для Azure новий сервіс Azure Batch.
Як завжди в описі будь-якого хмарного сервісу купа слів про «large-scale parallel and high performance computing».
Читаючи описи проекту в перший раз, відразу виникне питання — а що він робить такого, що не робить вже існуючі проекти, адже можна завантажити бінарники на виконання вже давно.

Azure Batch — це windows кластер за запитом, для виконання операцій над великим числом однакових, незалежних завдань.


WebJob
Від WebJob цей проект відрізняється багатьом:
  • По-перше WebJob виконується на тих же інстансах, що й основне додаток. Тобто це паразитна навантаження до них. Batch ж використовує виділені машини.Т.до. WebJob виповнюється як паразитна навантаження, він забирає ресурси вашого веб-додатки. У Batch можна використовувати зовсім інші за розмірами инстансы ніж для основного сайту.
  • WebJob масштаб рівня машини, на яку він був задеплоен. Тобто перепарсить логи, які сама ж машина згенерувала. У Batch немає завдання перелопатити згенеровані файли самим хостом, він обробляє дані створені де завгодно в будь-якій кількості.
  • Batch — це кластер, а webjob одна машинка.
Service Role
Другий кандидат на порівняння — Service Role. Service Role може виконувати будь-яку роботу, яку ви напишіть.
  1. Batch працює за вашим замовленням, а ServiceRole постійно. У цьому відмінність.
  2. Щоб балансувати навантаження між Service Role доведеться винаходити велосипед, у Batch вам пердоставляют Api і контракт, що скорочує політ фантазії для велосипедостроения.
Віртуальні машини
Третій кандидат на порівняння Віртуальні машини:
Віртуальні машини ви отримуєте по одній, випадки Batch ви отримуєте відразу кластер і управляється кластером, а не однієї віртуальної машиною. Тобто ви копіюєте ЗА 1 раз, а потім тільки користуєтеся. (Правда є особливість, віртуальну машину ви можете вибрати з готових images, або змонтувати вже свою, а тут ваш вибір обмежений 3 версіями windows.
У випадки з віртуальними машинами, як і з Service Role будь планувальник вам доведеться писати самим і городити велописед.

HDInside(Hadoop)
Далі виникає бажання порівняти Batch і HDInside(Hadoop).
Деяких можна просто перерахування пов'язаних з hadoop речей може налякатиimage
image

Особисто моя думка, що Batch сильно простіше, ніж Hadoop. У ньому немає ні HDFS, Hive, Solar ні купи інших технологій-сервісів.
Простий, чистий windows cluster (набір числодробилок), з мінімальним розподілом навантаження і то якщо буде потрібно. Простота і каркас для написання планувальника — це єдине, що взагалі відрізняє Batch від раніше створених сервісів.
Один з авторів на хабре вже писав про Batch статті , і йому було шкода, що немає dataflow і т. п. Моя думка — не треба ускладнювати, чим простіше тим краще і тим нижче поріг входу.

Batch — це проміжне рішення між hdinside(hadoop) і віртуальними машин. Над просто виртуалньными машинами абстракція у вигляді завдань і пулу віртуальних машин, але не на стільки складно як у hadoop.
Моя особиста думка, що цей сервіс треба було робити ще роки 3-4 тому, на самому початку Azure, коли все було на порядок простіше, а необхідність була і тоді вже.

Сценарії
Самі Microsoft заявляють наступний набір сценаріїв використання:
  • Financial risk modeling
  • Image rendering and image processing
  • Media encoding and transcoding
  • Genetic sequence analysis
  • Software testing
Особисто у мене, коли я бачу такий список виникло питання — ті ж самі завдання вже раніше були представлені як use case до інших сервісів.
Тестування — це до visual studio online відео — це media services. За цим навіщо реально вам потрібен такий кластер — це виключно на ваш розсуд.

Основні концепції:

  • Virtual Machine Pool — набір віртуальних машин з однаковими харрактеристиками. Ви не самі инсталируете кожну машину і не конфигурируете, за вас це робить Azure. На даний момент доствпны тільки Windows образи для віртуальних машин, але є feature request на linux образи.
  • Task Virtual Machine — віртуальна машина, входящаяя в пул виділена для виконання завдань.
  • Work Item — шаблон операції. Приклад — запустити .exe файл на виконання. По суті це логічний контейнер.
  • Job — примірник Work Item запланований до виконання. Створюється разом з WorkItem
  • Task — шматки Job, які виконуються на віртуальній машині.


Послідовність виконання:
image
  • Завантажити пакет з бінарними файалами, які будуть виконувати завдання.
  • Завантажити файли з завданнями. Вони завантажуються в Azure Storage Account.
  • Створити пулл віртуальних машин.
  • Створити Work Item. Job буде створений автоматично.
  • Додати Task до Job.
  • Запустити додаток виконувати Task.
  • Дочекатися закінчення роботи програми.
  • Вивантажити результуючий файл результатів.
image

Свій Map Reduce без блекджека.
Серед прикладів роботи сервера можна знайти ось такий приклад:
Особисто мені він нагадує такий map-reduce.
Створюється клас, який вміє розділяти весь потік завдань на частини.image

а потім вже віртуальні машини отримують ці частини і виконують роботу.image


Rest Api
Як і у всіх сервіс azure, у Batch є Rest для управління завдань/пулами. Документація доступна:

У Nuget відразу ж з'явилися 2 пакета для роботи з batch .net перший і другий.

Обгортки для вже існуючих додатків, щоб вони могли запускатися в azure batch так само доступні в nuget тут і тут.

Ціни:
Ціни вказані за годину, завмер факту використання по хвилинах, а ціни у списку представлені в залежності від типу запитуваної инстанса віртуальної машини. На сам сервіс на час preview діє 50% знижка.
Особливість в тому, що ця ціна без урахування вартості ресурсів віртуальних машин, на яких це буде працювати. І реально треба ще додати ціну віртуальних машин.
. Сумарно вартості batch приблизно дорівнює використання базового HDInside.
Так, що по грошам виграшу немає у використання batch замість hdinside або просто набору виртуалок.

Посилання:


Текст статті доступі на github/

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.