Je li to bilo s Apache Storm? Heron naleti u pomoć

Prošle godine Twitter je bacio dvije bombe. Prvo, više neće koristiti Apache Storm u proizvodnji. Drugo, zamijenio ga je domaćim sustavom za obradu podataka, Heron.

Unatoč objavljivanju članka koji detaljno opisuje arhitekturu Heron, Twitterova alternativa Stormu ostala je skrivena u Twitterovim podatkovnim centrima. Sve se promijenilo prošlog tjedna kada je Twitter pustio Heron pod licencom otvorenog koda. Pa, što je Heron i gdje se to uklapa u svijet obrade podataka na veliko?

Stroj za obradu podataka usmjerenog acikličnog grafa (DAG), Heron je trenutno još jedan unos u vrlo pretrpanom polju. Ali Heron nije "pogledaj i ja!" rješenje ili pokušaj pretvaranja DAG motora u ekvivalent velikih podataka FizzBuzzu.

Heron je izrastao iz stvarnih zabrinutosti koje je Twitter imao sa svojim velikim raspoređivanjem topologija Oluje. To uključuje poteškoće s profiliranjem i rasuđivanjem o radnicima Storma kada se skaliraju na razini podataka i na razini topologije, statičku prirodu raspodjele resursa u usporedbi sa sustavom koji radi na Mesosu ili YARN-u, nedostatak podrške za povratni pritisak i još mnogo toga.

Iako je Twitter mogao usvojiti Apache Spark ili Apache Flink, to bi uključivalo prepisivanje svih postojećih koda Twittera. (Ne zaboravite, Twitter koristi Storm dulje od bilo koga drugog, stječući BackType, Stvoriteljev kreator, još 2011. godine prije nego što je bio otvoren izvor.) Umjesto toga, Twitter je zauzeo drugačiji pristup: novi okvir za obradu streama s API-jem kompatibilnim s Storm-om .

U ovom trenutku naše šetnje kroz novi okvir, obično bih prošao kroz neke primjere kako bih vam pokazao kakav je osjećaj kodiranja u okviru, ali s Heronom nema puno smisla - vijke i olovke pišete na potpuno isti način kao ti bi s Stormom. Sve što trebate učiniti da biste pokrenuli svoj Storm kod na Heron je dodati ovaj odjeljak ovisnostima vašeg pom.xml:

 com.twitter.heron

 heron-api

 SNAPSHOT

 compile

 com.twitter.heron

 heron-storm

 SNAPSHOT

 compile

Zatim uklanjate ovisnosti o olujnom kodu i dodatku clojure. Prekompajlirajte i vaš će se kôd pokretati na Heron bez dodatnih promjena. Jednostavan! (Uglavnom, u svakom slučaju, ali vratit ćemo se na to.)

Operativno, Heronova trenutna implementacija radi na vrhu Apache Mesos, koristeći Apache Aurora, Mesosov raspored zakazivanja koji je razvio Twitter (iznenađenje!). Otkako je sve svoje topologije Storm prebacio na Heron, Twitter je uspio smanjiti hardverske resurse posvećene topologijama za faktor tri, istovremeno povećavajući protok i smanjujući kašnjenje u obradi - što nije loše.

Možda je jedan od najzanimljivijih aspekata Heron-a taj što će se kod za njega pisati na Javi (ili Scali), a komponente internetskog korisničkog sučelja napisane su na Pythonu, kritičnim dijelovima okvira, kodu koji upravlja topologijama a mrežne komunikacije uopće nisu napisane na JVM jeziku.

Zaista, u srcu Herona pronaći ćete kôd na jeziku koji možda ne očekujete: C ++. Mislim da je ovo aspekt svijeta velikih podataka koji ćemo vidjeti još u godinama koje dolaze. 

Održavači Apache Storma uklonili su mnoge elemente svog izvornog Clojure koda u korist Java implementacije, a projekt Apache Spark trenutno generira Java kôd u letu kako bi ubrzao njegovu obradu DataFrame. Ali obojica su i dalje vezana uz JVM - a JVM ima problema na veliko. Nemojte me pogrešno shvatiti, JVM je nevjerojatna kreacija koja je 20 godina izdržala test vremena, ali kada se radi na strojevima s ogromnom količinom RAM-a i obrađuje ogromne količine podataka, pojavljuju se problemi s odvozom smeća, bez obzira na sve otmjena shema kolektora koju koristite.

U tom trenutku povratak na jezik poput C ++ počinje izgledati privlačno. Kao primjer, Scylla, C ++ reimplementacija Apache Cassandre, ima 10 puta veću propusnost od Cassandre, niti jedna od GC pauza po kojima je Cassandra na glasu u velikim implementacijama. Prilično sam uvjeren da ćemo uskoro vidjeti Heronov pristup koji se proširio i na druge okvire. Tome može pomoći pokušaj Project Paname da poboljša sučelje između Jave i drugih jezika.

S obzirom na to da Heron zahtijeva manje resursa i pruža veću propusnost i manje latencije od Apache Storma, trebali biste odmah premjestiti sve svoje topologije na Heron, zar ne? Pa možda. Heron je trenutno vezan za Mesos, pa ako nemate postojeću Mesos infrastrukturu, morat ćete i to postaviti, što nije mali pothvat. Također, ako koristite Stormove DRPC značajke, one su zastarjele u Heron.

Dobra mu je strana što Heron već više od godinu dana u proizvodnji pokreće sve potrebe za obradu Twittera, pa bi trebao moći podnijeti sve što na to možete baciti. Osim toga, Twitter ističe da se Heron koristi u Microsoftu i drugim tvrtkama iz Fortune 500, tako da možete biti relativno sigurni da će se zadržati.

S druge strane, Storm nije stajala mirno. Tim Apache Storma mogao bi se posvađati s Twitterovim opisom Heron kao "sljedeće generacije Apache Storma". Dok je Twitter radio na Heron, Apache Storm dosegao je 1,0 - što uključuje podršku za povratni pritisak, poboljšane mogućnosti uklanjanja pogrešaka i profiliranja, smanjenje kašnjenja za 60 posto i poboljšanje brzine do 16 puta.

Uz to, Storm 1.0 dodaje pacemaker, demon za iskrcavanje prometa otkucaja srca sa ZooKeepera, oslobađajući veće topologije od zloglasnog uskog grla ZooKeeper. Poboljšanja Heronine brzine mjere se prema kodu Storm 0.8.x od kojeg je odstupila, a ne trenutnoj verziji; ako ste već prešli na Storm 1.0, možda nećete vidjeti puno većeg poboljšanja u odnosu na svoje trenutne topologije Storma, a mogli biste naići na nekompatibilnosti između implementacije novih značajki poput podrške za povratni pritisak između Storma i Heron.

Sve u svemu, ne vjerujem da će Heron vjerojatno prouzročiti velike probleme u prihvaćanju okvira za obradu podataka kao što su Apache Spark, Apache Flink ili Apache Beam. Njihove apstrakcije na višoj razini i API-ji pružaju puno više iskustva za programere od API-ja Storm / Trident na nižoj razini. Međutim, vjerujem da će kombinacija JVM koda s ne-JVM modulima za kritične putove biti popularniji pristup u budućnosti, a u ovom aspektu Heron nam pokazuje sve smjerove u kojima ćemo putovati u mjesecima i godinama doći.