Даступная сістэма размеркаваных вылічэнняў 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 была запушчана ініцыятывы па перакладзе 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 для аконных аперацый дададзеная падтрымка захавання і ўзнаўленні стану ў бэкендзе.

У планавальнік запуску апрацоўшчыкаў дададзена падтрымка ўліку дадатковых рэсурсаў пры прыняцці рашэнняў, якія не абмяжоўваюцца.
CPU і памяццю, такіх як параметры сеткі і GPU. Унесена вялікая колькасць паляпшэнняў, звязаных з забеспячэннем інтэграцыі з платформай Кафка. Пашырана сістэма кантролю доступу, у якой з'явілася магчымасць стварэння груп адміністратараў і дэлегавання токенаў. Дададзеныя паляпшэнні, звязаныя з падтрымкай SQL і метрык. У інтэрфейсе адміністратара з'явіліся новыя каманды для адладкі стану кластара.

Вобласці прымянення Storm:

  • Апрацоўка патокаў новых дадзеных або абнаўленняў БД у рэальным часе;
  • Бесперапынныя вылічэнні: Storm можа выконваць бесперапынныя запыты і апрацоўваць бесперапынныя патокі, перадаючы вынікі апрацоўкі кліенту ў рэжыме рэальнага часу.
  • Размеркаваны выдалены выклік працэдур (RPC): Storm можа быць скарыстаны для забеспячэння паралелізму выканання рэсурсаёмістых запытаў. Заданне («тапалогія») у Storm уяўляе сабой размеркаваную па вузлах функцыю, якая чакае паступлення паведамленняў, якія трэба апрацаваць. Пасля прыёму паведамлення, функцыя апрацоўвае яго ў лакальным кантэксце і вяртае вынік. Прыкладам выкарыстання размеркаванага RPC можа быць раўналежная апрацоўка пошукавых запытаў або выкананне аперацый над вялікім наборам мностваў.

Асаблівасці Storm:

  • Простая мадэль праграмавання, якая значна спрашчае апрацоўку дадзеных у рэжыме рэальнага часу;
  • Падтрымка любых моў праграмавання. Маюцца модулі для моў Java, Ruby і Python, адаптацыя для іншых моў не выклікае складанасці дзякуючы вельмі простаму камунікацыйнаму пратаколу, для рэалізацыі падтрымкі якога патрабуецца каля 100 радкоў кода;
  • Адмаўстойлівасць: для запуску задання па апрацоўцы дадзеных патрабуецца сфармаваць jar-файл з кодам. Storm самастойна распаўсюдзіць дадзены jar-файл па вузлах кластара, падлучыць звязаныя з ім апрацоўшчыкі і арганізуе маніторынг. Пры завяршэнні задання код будзе аўтаматычна адключаны на ўсіх вузлах;
  • Гарызантальная маштабаванасць. Усе вылічэнні вырабляюцца ў раўналежным рэжыме, пры ўзрастанні нагрузкі да кластара досыць проста падлучыць новыя вузлы;
  • Надзейнасць. Storm гарантуе, што кожнае паведамленне, якое паступае, будзе цалкам апрацавана як мінімум адзін раз. Адзін раз паведамленне будзе апрацавана толькі ў выпадку адсутнасці памылак пры праходжанні ўсіх апрацоўшчыкаў, калі ўзніклі праблемы, то няўдалыя спробы апрацоўкі будуць паўтораны.
  • Хуткасць. Код Storm напісаны з аглядкай на высокую прадукцыйнасць і выкарыстоўвае для хуткага асінхроннага абмену паведамленнямі сістэму ZeroMQ.

Крыніца: opennet.ru

Дадаць каментар