Достъпна система за разпределени изчисления Apache Storm 2.0

Видях свет значителен вариант на системата за разпределена обработка на събития Apache Storm 2.0, забележителен с преминаването на нова архитектура, реализирана на езика Java, вместо използвания по-рано език Clojure.

Проектът позволява организирането на гарантирана обработка на различни събития в реално време. Например, Storm може да се прилага за анализ на потоци от данни в реално време, изпълнение на задачи за машинно обучение, организиране на непрекъснати изчисления, реализиране на RPC, ETL и др. Системата поддържа клъстеризация, създаване на отказоустойчиви конфигурации, режим на гарантирана обработка на данни и има висока производителност, достатъчна за обработка на повече от един милион заявки в секунда на един възел от клъстера.

Поддържа се интеграция с различни системи за обработка на опашки и технологии за бази данни. Архитектурата на Storm предвижда приемане и обработка на неструктурирани, постоянно обновяващи се потоци от данни, използвайки произволни сложни обработчици с възможност за секциониране между различни етапи на изчисленията. Проектът беше предаден на общността Apache след поглъщането на Twitter от компанията BackType, първоначално разработила фреймуърка. На практика Storm беше приложен в BackType за анализ на отражението на събития в микроблогове, чрез свързване на летящо нови туитове и използвани в тях линкове (например, беше направена оценка как външните линкове или публикувани в Twitter анонси се ретранслират от други участници).

Функционалността на Storm се сравнява с платформата Hadoop, като ключовото отличие е, че данните не са разположени в хранилище, а постъпват отвън и се обработват в реално време. В Storm няма вградена прослойка за организиране на хранилище и аналитичният запит започва да се прилага към постъпващите данни, докато не бъде отменен (ако в Hadoop се използват временно окончателни MapReduce работи, то в Storm се прилага идеята за непрекъснато изпълнявани „топологии“). Изпълнението на обработчиците може да бъде разпределено на няколко сървъра — Storm автоматично разпределя работата с потоките на различни възли от клъстера.

Първоначално системата беше написана на Clojure и работи в рамките на виртуална машина JVM. В Apache Foundation беше стартирана инициатива за пренос на Storm на ново ядро, написано на Java, чийто резултати бяха предложени в Apache Storm 2.0. Всичките основни компоненти на платформата са пренаписани на Java. Поддръжката за писане на обработвачи на Clojure остава, но сега се предлага под формата на биндинги. За работа с Storm 2.0.0 е необходима Java 8. Напълно е преосмислена моделът за многопоточна обработка, което позволява да се постигне значителен скок в производителността (за някои топологии закъсненията са намалели с 50-80%).

Достъпна система за разпределени изчисления Apache Storm 2.0

В новата версия е предложен и нов типизиран API Streams, който позволява задаването на обработвачи, използвайки операции в стил функционално програмиране. Новият API е реализиран върху стандартния основен API и поддържа автоматично обединяване на операциите за оптимизиране на тяхната обработка. В API Windowing за оконни операции е добавена поддръжка за запазване и възстановяване на състоянието в бекенда.

В планировчика на стартиране на обработвачи е добавена поддръжка за вземане под внимание на допълнителни ресурси при вземане на решения, които не се ограничават само до
ЦП и памет, като например параметри на мрежата и GPU. Внесени са много подобрения, свързани с осигуряване на интеграция с платформата Kafka. Разширена е системата за контрол на достъпа, в която се появи възможността за създаване на групи администратори и делегиране на токени. Добавени са подобрения, свързани с поддръжката на SQL и метрики. В интерфейса на администратора се появиха нови команди за отстраняване на проблеми в състоянието на кластера.

Области на приложение на Storm:

  • Обработка на потоци нови данни или актуализации на БД в реално време;
  • Непрекъснати изчисления: Storm може да извършва непрекъснати заявки и да обработва непрекъснати потоци, предавайки резултатите от обработката на клиента в реално време.
  • Разпределено отдалечено извикване на процедури (RPC): Storm може да се използва за осигуряване на паралелизъм при изпълнението на ресурсно интензивни заявки. Задачата („топология“) в Storm представлява разпределена функция по възли, която очаква получаване на съобщения, които трябва да се обработят. След получаване на съобщението, функцията го обработва в локален контекст и връща резултата. Пример за използване на разпределено RPC може да бъде паралелната обработка на търсения или изпълнението на операции върху голям набор от множества.

Характеристики на Storm:

  • Определена модел на програмиране, която значително опростява обработката на данни в реално време;
  • Подкрепа на всякакви езици за програмиране. Има модули за Java, Ruby и Python, а адаптацията за други езици не е трудна благодарение на много простия комуникационен протокол, за имплементирането на който са нужни около 100 реда код;
  • Устойчивост на грешки: За стартиране на задачата по обработка на данни е необходимо да се създаде jar файл с кода. Storm самостоятелно ще разпространи този jar файл по възлите на кластера, свърже съответните обработчици и организира мониторинг. При приключване на задачата кодът ще бъде автоматично изключен на всички възли;
  • Хоризонтална скалируемост. Всички изчисления се извършват в паралелен режим, при увеличаване на натоварването е достатъчно просто да се свържат нови възли с кластера;
  • Надеждност. Storm гарантира, че всяко получено съобщение ще бъде напълно обработено поне веднъж. Съобщението ще бъде обработено веднъж само при отсъствието на грешки по време на преминаването през всичките обработчици, а ако възникнат проблеми, неуспешните опити за обработка ще бъдат повторени.
  • Скорост. Кодът на Storm е написан с акцент на висока производителност и използва за бърза асинхронна размяна на съобщения системата ZeroMQ.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster