Programovanie

Mali ste to s Apache Storm? Volavka sa strhla na záchranu

Vlani Twitter odhodil dve bomby. Najskôr by už vo výrobe nepoužíval Apache Storm. Po druhé, nahradil ho domácim systémom na spracovanie údajov Heron.

Aj napriek uvedeniu článku s podrobnosťami o architektúre Heronu zostala alternatíva Twitteru k Stormu skrytá v dátových centrách Twitteru. Všetko sa zmenilo minulý týždeň, keď Twitter vydal Heron na základe licencie open source. Čo je teda Heron a kam sa hodí vo svete spracovania dát v mierke?

Heron je riadeným acyklickým grafom (DAG) a práve teraz je ďalším záznamom vo veľmi preplnenom poli. Ale Heron nie je „pohľad, aj ja!“ riešenie alebo pokus premeniť motory DAG na ekvivalent veľkých dát ako FizzBuzz.

Heron vyrástol zo skutočných obáv, ktoré mala spoločnosť Twitter s veľkým nasadením topológií Storm. Medzi ne patrili ťažkosti s profilovaním a uvažovaním o pracovníkoch spoločnosti Storm, keď sú škálované na úrovni údajov a na úrovni topológie, statická povaha alokácie zdrojov v porovnaní so systémom, ktorý beží na platformách Mesos alebo YARN, nedostatok podpory protitlaku a ďalšie.

Aj keď Twitter mohol prijať Apache Spark alebo Apache Flink, znamenalo by to prepis všetkého existujúceho kódu Twitteru. (Nezabudnite, že Twitter používal Storm dlhšie ako ktokoľvek iný. Získal BackType, tvorcu Stormu, ešte v roku 2011 predtým, ako bol open source.) Namiesto toho Twitter zvolil iný prístup: nový rámec spracovania streamov s API kompatibilným so Storm .

V tomto bode našej prechádzky novým rámcom by som za normálnych okolností prešiel niekoľkými príkladmi, aby som vám ukázal, ako sa cíti kódovanie v rámci, ale s Heronom to nemá zmysel - skrutky a n-tice Storm píšete úplne rovnakým spôsobom ako by si s Stormom. Všetko, čo musíte urobiť, aby ste spustili svoj kód Storm na Herone, je pridať túto časť k závislostiam vašich pom.xml:

com.twitter.heron

volavka-api

SNAPSHOT

zostaviť

com.twitter.heron

volavka-búrka

SNAPSHOT

zostaviť

Potom odstránite svoje závislosti od búrkových kódov a clojure-pluginov. Prekompilujte a váš kód bude bežať na Herone bez ďalších potrebných zmien. Jednoduché! (Väčšinou, aj tak, ale k tomu sa ešte vrátime.)

Aktuálna implementácia Heronu z operačného hľadiska beží na vrchole Apache Mesos a využíva Apache Aurora, plánovací rámec Mesos vyvinutý spoločnosťou Twitter (prekvapenie!). Od prepnutia všetkých svojich topológií Storm na Heron sa spoločnosti Twitter podarilo znížiť hardvérové ​​zdroje venované topológiám trikrát a zároveň zvýšiť priepustnosť a znížiť latenciu pri spracovaní - nie zlé.

Jedným z najzaujímavejších aspektov Heronu je možno to, že zatiaľ čo jeho kód bude napísaný v jazyku Java (alebo Scala) a webové komponenty používateľského rozhrania sú napísané v jazyku Python, ktorý je kritickou časťou rámca, kód spravujúci topológie. a sieťová komunikácia nie sú vôbec písané v jazyku JVM.

V samom srdci Heronu nájdete kód v jazyku, ktorý by ste možno nečakali: C ++. Myslím si, že toto je aspekt sveta veľkých dát, ktorého sa v nasledujúcich rokoch dočkáme viac.

Správcovia Apache Storm odstránili veľa prvkov svojho pôvodného kódu Clojure v prospech reimplementácií Java a projekt Apache Spark v súčasnosti generuje kód Java za chodu, aby sa urýchlilo jeho spracovanie DataFrame. Ale obaja sú stále viazaní na JVM - a JVM má problémy z rozsahu. Nechápte ma zle, JVM je úžasný výtvor, ktorý obstojí v teste času už 20 rokov, ale pri prevádzke na strojoch s obrovským objemom RAM a spracovávaní ohromného množstva dát sa objavia problémy so zberom odpadu, nech už sa deje čokoľvek efektná zberateľská schéma, ktorú používate.

V tom okamihu začne byť návrat späť do jazyka ako C ++ lákavý. Napríklad Scylla, reimplementácia Apache Cassandra v C ++, má desaťkrát vyššiu priepustnosť ako Cassandra bez žiadnej z GC pauz, ktorými je Cassandra pri veľkých nasadeniach preslávená. Som si dosť istý, že čoskoro uvidíme, ako sa Heronov prístup rozšíri do ďalších rámcov. Tomu môže pomôcť pokus Project Panama o zlepšenie rozhrania medzi Javou a inými jazykmi.

Vzhľadom na to, že Heron vyžaduje menej zdrojov a poskytuje väčšiu priepustnosť a menšiu latenciu ako Apache Storm, mali by ste všetky svoje topológie presunúť do Heron práve teraz, že? No, možno. Heron je momentálne pripojený k systému Mesos, takže ak nemáte existujúcu infraštruktúru systému Mesos, budete si ho musieť tiež nastaviť, čo nie je žiadny malý podnik. Tiež, ak využívate funkcie DRPC spoločnosti Storm, sú vo Herone zastarané.

Pozitívne je, že spoločnosť Heron už viac ako rok prevádzkuje všetky výrobné potreby spoločnosti Twitter vo výrobe, takže by mala byť schopná zvládnuť všetko, čo na ňu môžete hodiť. Twitter navyše poukazuje na to, že Heron sa používa v spoločnosti Microsoft a ďalších spoločnostiach z rebríčka Fortune 500, takže si môžete byť pomerne istí, že zostane pri tom.

Na druhej strane, Storm nestála na mieste. Tím Apache Storm by sa mohol hádať s popisom Herona na Twitteri ako „novej generácie Apache Storm“. Zatiaľ čo Twitter pracoval na Herone, Apache Storm dosiahol 1,0 - čo zahŕňa podporu spätného tlaku, vylepšené možnosti ladenia a profilovania, 60-percentné zníženie latencie a až 16-násobné zvýšenie rýchlosti.

Storm 1.0 navyše pridáva kardiostimulátor, démona na znižovanie prenosu srdcového rytmu zo ZooKeeper, čím uvoľňuje väčšie topológie z neslávne známeho zúženia ZooKeeper. Vylepšenia rýchlosti Heronu sa merajú od kódu Storm 0.8.x, od ktorého sa odchýlil, nie od aktuálnej verzie; ak ste už prešli na Storm 1.0, možno nebudete oproti súčasným topológiám Storm vidieť oveľa väčšie zlepšenie a môžete naraziť na nekompatibilitu medzi implementáciou nových funkcií, ako je podpora protitlaku medzi Storm a Heron.

Celkovo teda neverím, že Heron pravdepodobne spôsobí veľkú priepasť pri využívaní rámcov na spracovanie údajov, ako sú Apache Spark, Apache Flink alebo Apache Beam. Ich abstrakcie a rozhrania API na vyššej úrovni poskytujú vývojárom oveľa príjemnejšie prostredie ako rozhrania API Storm / Trident na nižšej úrovni. Verím však, že zmes kódu JVM s modulmi, ktoré nie sú JVM, pre kritické cesty bude v budúcnosti populárnejším prístupom a v tomto aspekte nám Heron ukazuje všetky smery, ktorými sa budeme uberať v mesiacoch a rokoch prísť.

$config[zx-auto] not found$config[zx-overlay] not found