...

пятница, 14 ноября 2014 г.

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/


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий