Apache Flink vs Spark – ohittaako toinen toisen?

Viimeisin päivitetty:

Apache Spark ja Apache Flink ovat molemmat avoimen lähdekoodin hajautettuja tietojenkäsittelykehyksiä, jotka on rakennettu vähentämään Hadoop Mapreducen latensseja nopeassa tietojenkäsittelyssä. On yleinen väärinkäsitys, että Apache Flink tulee korvaamaan Sparkin vai onko mahdollista, että nämä molemmat big data -teknologiat ca n rinnakkain, jolloin ne palvelevat samankaltaisia tarpeita vikasietoiseen, nopeaan tietojenkäsittelyyn. Apache Spark ja Flink saattavat tuntua samankaltaisilta sellaisesta henkilöstä, joka ei ole työskennellyt kummankaan kanssa ja tuntee vain Hadoopin, ja on selvää, että hänestä Apache Flinkin kehittäminen on lähinnä turhaa. Flink on kuitenkin onnistunut pysymään kärjessä, koska sen stream-prosessointiominaisuus onnistuu käsittelemään riveittäin dataa reaaliajassa – mikä ei ole mahdollista Apache Sparkin eräkäsittelymenetelmällä. Tämä tekee Flinkistä Sparkia nopeamman.

Tämän IBM:n tutkimuksen mukaan luomme päivittäin noin 2,5 kvintiljoonaa tavua dataa – ja tämä datanmuodostusnopeus kasvaa edelleen ennennäkemättömällä vauhdilla. Toisesta näkökulmasta katsottuna noin 90 prosenttia kaikesta maailmassa olevasta datasta on luotu kahden viime vuoden aikana, vaikka World Wide Web on ollut yleisön saatavilla jo reilusti yli kaksi vuosikymmentä. Internetin kasvaessa myös käyttäjien määrä kasvoi, ja jatkuvasti kasvava sisällön kysyntä tasoitti tietä Web 2.0:lle viime vuosikymmenellä. Se oli ensimmäinen kerta, kun käyttäjät saivat luoda omaa dataansa internetissä, ja se oli valmiina datanälkäisen yleisön kulutettavaksi.

Sitten oli sosiaalisen median vuoro tunkeutua elämäämme. Wersm (we are social media) -raportin mukaan Facebook saa yli 4 miljoonaa tykkäystä minuutissa! Muiden suosittujen lähteiden tuottama data mainitaan infografiikassa (otettu samasta wersm-tutkimuksesta), ennen kuin katsomme, miten tätä dataa kulutetaan.

Big Data Facts and Figures Infographic

”Miten tallentaa nämä valtavat tietomäärät?” oli ongelmanratkaisu, joka työllisti tekniikanörttejä suurimman osan edellisestä vuosikymmenestä. Sosiaalisen median äkillinen nousu ei helpottanut heidän tehtäviään yhtään. Uuden ajan tallennusratkaisut, kuten pilvipalvelut, ovat kuitenkin mullistaneet alan ja esittäneet parhaan mahdollisen ratkaisun. Tällä vuosikymmenellä ongelmanratkaisu on muuttunut muotoon ”Mitä tehdä valtaville tietomäärille?”. Data-analytiikka on noussut lopulliseksi tavoitteeksi, mutta sitä ennen on tehtävä paljon työtä, jotta eri lähteisiin eri muodoissa tallennetut tiedot voidaan integroida ja valmistella käsittelyä ja analytiikkaa varten, mikä on vaativa tehtävä.

Täydellinen luettelo big data -yrityksistä ja niiden palkoista- KLIKKAA TÄSTÄ

Tämän päivän kaksi aihettamme – Apache Spark ja Apache Flink – pyrkivät vastaamaan tuohon kysymykseen ja muuhun.

Apache Spark vs. Flink

Apache Spark

Spark on avoimen lähdekoodin klusterilaskentakehys, jolla on laaja maailmanlaajuinen käyttäjäkunta. Se on kirjoitettu Scalalla, Javalla, R:llä ja Pythonilla, ja se tarjoaa ohjelmoijille sovellusohjelmointirajapinnan (API), joka on rakennettu vikasietoisen, vain lukukäyttöön tarkoitetun hajautetun datan monijoukon varaan. Lyhyessä kahdessa vuodessa sen ensimmäisestä julkaisusta (toukokuu 2014) se on saanut laajaa hyväksyntää reaaliaikaiselle, muistissa tapahtuvalle, kehittyneelle analytiikalle nopeutensa, helppokäyttöisyytensä ja kyvykkyytensä käsitellä vaativia analyysivaatimuksia ansiosta.

Apache Spark -koulutus verkossa

Jos haluat lisätietoja Big Data -urasta, napsauta tämän sivun yläosassa olevaa oranssia ”Pyydä tietoa” -painiketta.

Sparkin edut

Apache Sparkilla on useita etuja perinteisiin Big Data- ja MapReduce-pohjaisiin teknologioihin verrattuna. Merkittävimmät niistä ovat. Se vie MapReducen olennaisesti seuraavalle tasolle, ja sen suorituskyky on moninkertaisesti nopeampi. Yksi Sparkin tärkeimmistä erottavista tekijöistä on sen kyky pitää välitulokset itse muistissa sen sijaan, että ne kirjoitettaisiin takaisin levylle ja luettaisiin sieltä uudelleen, mikä on kriittistä iteraatioon perustuvissa käyttötapauksissa.

  • Nopeus – Spark voi suorittaa eräkäsittelytehtäviä 10-100 kertaa nopeammin kuin MapReduce. Tämä ei tarkoita sitä, että se jää jälkeen, kun dataa täytyy kirjoittaa levylle (ja hakea levyltä), sillä se on maailmanennätyksen haltija laajamittaisessa levyllä tapahtuvassa lajittelussa.
  • Helppokäyttöisyys – Apache Sparkilla on helppokäyttöiset API:t, jotka on rakennettu suurten tietokokonaisuuksien käsittelyä varten.
  • Yhtenäinen moottori – Sparkia voidaan käyttää Hadoopin päällä, jolloin se voi hyödyntää sen klusterihallintajärjestelmää (YARN) ja sen perustana olevaa tallennustietokantaa (HDFS, HBase jne.). Se voi kuitenkin toimia myös Hadoopista riippumatta ja liittyä yhteen muiden klusterinhallinta- ja tallennusalustojen (kuten Cassandra ja Amazon S3) kanssa. Mukana on myös korkeamman tason kirjastoja, jotka tukevat SQL-kyselyjen tiedon suoratoistoa, koneoppimista ja graafien käsittelyä.
  • Valitse Java, Scala tai Python – Spark ei sido sinua tiettyyn kieleen, vaan voit valita suosittujen kielten, kuten Javan, Scalan, Pythonin, R:n ja jopa Clojuren, joukosta.
  • Tiedon jakaminen muistissa – Eri työt voivat jakaa dataa muistissa, mikä tekee siitä ihanteellisen valinnan iteratiivisiin, vuorovaikutteisiin ja tapahtumavirtojen käsittelytehtäviin.
  • Aktiivinen, laajeneva käyttäjäyhteisö – Aktiivinen käyttäjäyhteisö on johtanut siihen, että Sparkin vakaa julkaisu (kesäkuussa 2016) julkaistiin kahdessa vuodessa sen alkuperäisestä julkaisusta. Tämä kertoo paljon sen maailmanlaajuisesta hyväksyttävyydestä, joka on kasvussa.

Apache Flink

Apache Flink, joka tarkoittaa saksaksi ”nopeaa” tai ”ketterää”, on uusin tulokas Big Data -analytiikkaan keskittyneiden avoimen lähdekoodin kehysten luettelossa, jotka pyrkivät Sparkin tapaan korvaamaan Hadoopin ikääntyvän MapReducen. Flink sai ensimmäisen API-stabiilin versionsa, joka julkaistiin maaliskuussa 2016, ja se on rakennettu Sparkin tapaan erätietojen muisti-sisäiseen käsittelyyn. Tämä malli on todella kätevä, kun samaan dataan on tehtävä toistuvia läpikäyntejä. Tämä tekee siitä ihanteellisen ehdokkaan koneoppimiseen ja muihin käyttötapauksiin, joissa tarvitaan mukautuvaa oppimista, itseoppivia verkkoja jne. Esineiden internetin (Internet of Things, IoT) -avaruuden väistämättömän buumin myötä Flinkin käyttäjäkunnalla on edessään jännittäviä haasteita.

Flinkin edut

  • Varsinainen virtakäsittelymoottori, joka voi lähestyä eräkäsittelyä sen sijaan, että se olisi päinvastoin.
  • Parempi muistinhallinta – Eksplisiittisellä muistinhallinnalla päästään eroon Spark-kehyksessä esiintyvistä satunnaisista piikeistä.
  • Nopeus – Se hallitsee nopeammat nopeudet sallimalla iteratiivisen prosessoinnin tapahtuvan samassa solmussa sen sijaan, että klusteri suorittaisi niitä itsenäisesti. Sen suorituskykyä voidaan edelleen virittää virittämällä sitä niin, että se käsittelee uudelleen vain sen osan datasta, joka on muuttunut, eikä koko joukkoa. Se tarjoaa jopa viisinkertaisen nopeuslisäyksen verrattuna tavalliseen käsittelyalgoritmiin.
  • Vähemmän konfigurointia

Apache Flink vs. Spark

Kun Flink tuli markkinoille, Apache Spark oli jo de facto-kehys nopeille, muistissa tapahtuvaan big data -analytiikkaan liittyville nopeille, suurille datan analyysitarpeille useissa organisaatioissa ympäri maailmaa. Tämä sai Flinkin näyttämään tarpeettomalta. Loppujen lopuksi, miksi tarvitsisi toista tietojenkäsittelymoottoria, kun jo olemassa oleva moottori ei vielä ollut kunnossa? Täytyy kaivautua syvemmälle Flinkin ominaisuuksiin havainnoidakseen, mikä erottaa sen muista, vaikka useat analyytikot ovatkin povanneet sitä ”data-analytiikan 4G:ksi”.

Syvälle Sparkin asetuksiin on upotettu pieni heikkous, jonka Flink on ottanut kohteekseen ja jota se pyrkii hyödyntämään. Vaikka se pitääkin paikkansa satunnaisia keskusteluja varten, Spark ei ole puhtaasti stream-prosessointimoottori. Kuten Ian Pointer toteaa InfoWorldin artikkelissa ”Apache Flink: New Hadoop contender squares off against Spark” (Uusi Hadoop-haastaja vastustaa Sparkia), Spark on pohjimmiltaan nopea eräajo, joka käsittelee vain pientä osaa saapuvasta datasta aikayksikön aikana. Spark kutsuu tätä virallisessa dokumentaatiossaan ”micro batchingiksi”. Tällä kysymyksellä ei todennäköisesti ole käytännön merkitystä toiminnalle, ellei käyttötapaus vaadi pientä latenssia (rahoitusjärjestelmät), jossa millisekuntien suuruinen viive voi aiheuttaa merkittäviä vaikutuksia. Tästä huolimatta Flink on melko pitkälti keskeneräinen, eikä se voi vielä väittää korvaavansa Sparkia.

Flink on virrankäsittelykehys, joka voi suorittaa eräkäsittelyä vaativia tehtäviä, mikä antaa mahdollisuuden käyttää samaa algoritmia molemmissa moodeissa ilman, että on turvauduttava Apache Stormin kaltaiseen tekniikkaan, joka vaatii matalaa viiveaikaa vastaamiseen.

Kumpaakin Sparkia ja Flinkiä tukee in-muistissa tapahtuvaa käsittelyä, mikä antaa niille selvän nopeusedun muihin kehyksiin verrattuna. Kun on kyse saapuvan datan reaaliaikaisesta käsittelystä, Flink ei pärjää Sparkille, vaikka se pystyykin suorittamaan reaaliaikaisia käsittelytehtäviä.

Spark ja Flink pystyvät molemmat käsittelemään iteratiivista, muistissa tapahtuvaa käsittelyä. Nopeuden osalta Flink saa yliotteen, sillä se voidaan ohjelmoida käsittelemään vain muuttunutta dataa, jolloin se jää Sparkin edelle.

Kasvutarinoita – Spark ja Flink

Jokainen ohjelmistokehys tarvitsee muutakin kuin teknistä asiantuntemusta, jotta se pystyy auttamaan yrityksiä saamaan maksimaalisen arvon. Tässä jaksossa syvennymme Databricksin Apache Spark 2015 Year in Review -artikkeliin ja katsomme, miten se on pärjännyt maailmanlaajuisessa käyttäjä- ja kehittäjäyhteisössä. Vuoden aikana julkaistiin neljä versiota (1.3-1.6), joista jokainen sisälsi satoja korjauksia kehyksen parantamiseksi. Se, mikä on kiinnittänyt huomiomme, on osallistuvien kehittäjien määrän kasvu – 500:sta vuonna 2014 yli 1000:een vuonna 2015! Toinen huomionarvoinen asia Sparkissa on se, miten helposti sen käyttäjät siirtyvät uusiin versioihin. Raportissa mainitaan, että kolmen kuukauden kuluessa suurin osa käyttäjistä siirtyy uusimpaan versioon. Nämä seikat vahvistavat Sparkin mainetta aktiivisimmin kehitettynä (ja omaksuttuna) avoimen lähdekoodin datatyökaluna.

Flink on tullut kisaan suhteellisen myöhään, mutta sen virallisella verkkosivustolla oleva vuoden 2015 vuosikatsaus osoittaa, miksi se on tullut jäädäkseen kattavimpana avoimen lähdekoodin virrankäsittelykehyksenä. Flinkin github-repository (Get the Repository – Here) osoittaa, että yhteisön koko kaksinkertaistui vuonna 2015 – 75 osallistujasta 150:een. Arkiston haarautuminen yli kolminkertaistui vuoden aikana, samoin arkiston tähtien määrä. Saksan Berliinistä alkunsa saanut käyttäjäyhteisö on kasvanut maanosien yli Pohjois-Amerikkaan ja Aasiaan. Flink Forward -konferenssi oli Flinkille toinen virstanpylväs, johon osallistui yli 250 osallistujaa. Yli 100 osallistujaa matkusti eri puolilta maailmaa osallistuakseen teknisiin puheenvuoroihin, joita pitivät muun muassa Googlen, MongoDB:n, Telecomin, NFLabsin, RedHatin, IBM:n, Huawein, Ericssonin, Capital Onen ja Amadeuksen kaltaiset organisaatiot.

Vaikka on vielä aikaista nostaa jompaa kumpaa näistä kahdesta selkeäksi voittajaksi, olemme sitä mieltä, että sen sijaan, että monet kehykset tekisivät samaa asiaa, teknologiamaailmaa palvelisi paremmin se, että uudet tulokkaat tekisivät erilaisia asioita ja täydentäisivät olemassa olevia sen sijaan, että kilpailisivat niitä vastaan.

Apache Spark -verkkokoulutus

PREVIOUS

NEXT