Mitä Apache Spark on? Big data alustan, joka murskataan Hadoop

Apache Spark määritelty

Apache Spark on tietojen käsittely puitteet, joka voi nopeasti suorittaa käsittely tehtäviä erittäin suuria tietomääriä, ja voi myös jakaa tietojenkäsittelyn tehtäviä useisiin tietokoneisiin, joko omasta tai yhdessä muiden hajautetun laskennan työkaluja. Nämä kaksi ominaisuudet ovat avain maailman big data ja koneoppimisen, jotka vaativat vaihtotyö massiivinen laskentateho crunch kautta suuri tietojen myymälöissä., Kipinä myös ottaa joitakin ohjelmointi rasitteita näistä tehtävistä pois hartiat kehittäjille helppo käyttää API, joka abstraktit pois paljon rutiinityötä distributed computing ja big data processing.

sen nöyrä alkua vuonna AMPLab U. C. Berkeley vuonna 2009, Apache Spark on tullut yksi tärkeimmistä big data hajautettuun puitteet maailmassa. Kipinä voidaan käyttää eri tavoin, tarjoaa native siteet Java, Scala, Python ja R-ohjelmointi kielellä, ja tukee SQL, streaming data, kone oppiminen, ja kuvaaja käsittely., Löydät sen käyttää pankit, teleyritykset, pelit yritykset, hallitukset, ja kaikki suuret teknologian jättiläisten kuten Apple, Facebook, IBM ja Microsoft.

Apache Spark arkkitehtuuri

perustasolla, Apache Spark-sovellus koostuu kahdesta osasta: kuljettaja, joka muuntaa käyttäjän koodi useita tehtäviä, jotka voidaan jakaa eri työntekijä solmut, ja toteuttajille, joka ajaa ne solmut ja suorittaa heille osoitetut tehtävät. Jonkinlainen klusterin johtaja on tarpeen toimia välittäjänä näiden kahden välillä.,

kättelyssä, Kipinä voi ajaa standalone klusterin tilassa, joka yksinkertaisesti vaatii Apache Spark framework ja JVM jokaisen koneen klusterin. Kuitenkin, se on enemmän todennäköistä, voit ll haluavat hyödyntää vankempi resource tai klusterin hallinta järjestelmä hoitaa jakamisesta työntekijöiden kysyntä sinua. Yrityksessä tämä tarkoittaa yleensä sitä, käynnissä Hadoop LANKA (tämä on, miten Cloudera ja Hortonworks jakaumat ajaa Kipinä, työpaikat), mutta Apache Spark voi myös ajaa Apache Mesos, Kubernetes, ja Ikkunasta Parvi.,

Jos etsit onnistunut ratkaisu, sitten Apache Spark löytyy osana Amazon EMR, Google Cloud Dataproc, ja Microsoft Azure HDInsight. Databricks, yritys, joka työllistää perustajien Apache Spark, tarjoaa myös Databricks Yhtenäinen Analytiikan Alustan, joka on kattava onnistunut palvelu, joka tarjoaa Apache Spark klustereita, streaming-tuki, integroitu web-pohjaisia notebook kehitystä, ja optimoitu pilvi I/O-suorituskykyä yli standardi Apache Spark jakelu.

Apache Spark rakentaa käyttäjän tietojen käsittely komentoja osaksi Suunnattu Asyklinen Graafi, tai DAG., DAG on Apache Sparkin aikataulukerros; se määrittää, mitä tehtäviä suoritetaan millä solmuilla ja missä järjestyksessä.

Spark vs. Hadoop: Why use Apache Spark?

kannattaa huomauttaa, että Apache Spark vs. Apache Hadoop on hieman harhaanjohtava. Spark sisältyy nykyään useimpiin Hadoop-jakeluihin. Mutta koska kaksi iso etuja, Kipinä on tullut puitteet valinta, kun käsittely big data, ohittaminen vanhan MapReduce paradigma, joka toi Hadoop etualalle.

ensimmäinen etu on nopeus., Kipinä on in-muistin tiedot moottori tarkoittaa, että se voi suorittaa tehtäviä, jopa sata kertaa nopeammin kuin MapReduce tietyissä tilanteissa, etenkin verrattuna monivaiheinen työpaikkoja, jotka vaativat kirjallisesti valtion takaisin levylle vaiheiden välillä. Pohjimmiltaan, MapReduce luo kaksivaiheinen toteutus kaavio koostuu tietojen kartoitus ja vähentäminen, kun taas Apache Spark on DAG on useita vaiheita, jotka voidaan jakaa tehokkaammin. Jopa Apache Spark työpaikkoja, joissa tietoja ei voida täysin sisällä muisti yleensä noin 10 kertaa nopeammin kuin niiden MapReduce vastine.,

toinen etu on kehittäjäystävällinen Spark API. Niin tärkeää kuin Sparkin speedup on, voisi väittää, että Spark API: n ystävällisyys on vielä tärkeämpää.

Spark Core

verrattuna MapReduce ja muita Apache Hadoop osia, Apache Spark API on erittäin ystävällinen kehittäjille, piilossa paljon monimutkaisuus hajautettuun moottori takana yksinkertainen menetelmä vaatii., Kanoninen esimerkki tästä on, miten lähes 50 riviä MapReduce-koodin laskea sanoja asiakirjassa voidaan vähentää vain pari riviä Apache Spark (täällä on esitetty Scala):

tarjoamalla siteet suosittuja kieliä, tietojen analysointia, kuten Python ja R, sekä enemmän yritys-ystävällinen Java-ja Scala, Apache Spark avulla kaikki sovelluksen kehittäjät datan tutkijat valjastaa sen skaalautuvuus ja nopeus helposti tavalla.,

Kipinä RDD

ytimessä Apache Spark on käsite Joustava Jaettu Aineisto (RDD), ohjelma abstraktio, joka edustaa muuttumaton kokoelma esineitä, jotka voidaan jakaa eri laskentaklusterin. RDDs-toiminnot voidaan myös jakaa klusteriin ja toteuttaa rinnakkaisessa eräprosessissa, mikä johtaa nopeaan ja skaalautuvaan rinnakkaiskäsittelyyn.

RDDs voidaan luoda yksinkertaisista tekstitiedostoista, SQL-tietokannoista, NoSQL-kaupoista (kuten Cassandra ja MongoDB), Amazon S3-ämpäreistä ja paljon muuta., Paljon Spark Core API on rakennettu tämän RDD-käsite, jonka avulla perinteinen kartta ja vähentää toiminnallisuus, mutta tarjoaa myös sisäänrakennettu tuki liittyminen aineistoja, suodatus, näytteenotto ja yhdistäminen.

Kipinä toimii hajautettu muoti yhdistämällä kuljettaja ydin prosessi, joka jakaa Kipinä-sovellus, tehtävät ja jakaa ne keskuudessa monet toimeenpanija prosesseja, jotka tehdä työtä. Näitä toimeenpanijoita voidaan skaalata ylös ja alas sovelluksen tarpeiden mukaan.,

Spark SQL

alun Perin nimellä Shark, Spark SQL on tullut enemmän ja enemmän tärkeää, Apache Spark-projektiin. Se on todennäköisesti käyttöliittymä yleisimmin käytetty nykypäivän Kehittäjät luodessaan sovelluksia. Spark SQL keskittyy strukturoidun Datan käsittelyyn käyttäen R: ltä ja Pythonilta (pandoissa) lainattua dataframe-lähestymistapaa. Mutta kuten nimestä voi päätellä, Spark SQL tarjoaa myös SQL2003-yhteensopiva käyttöliittymä istä tiedot, tuo voima Apache Spark analyytikkojen sekä kehittäjille.,

Rinnalla standardi-SQL tuki, Spark SQL tarjoaa standardin rajapinnan lukeminen ja kirjoittaminen muille datastores kuten JSON, HDFS, Apache Hive, JDBC, Apache ORC, ja Apache Parketti, jotka kaikki ovat tuettuja kättelyssä. Muita suosittuja myymälöissä—Apache Cassandra, MongoDB, Apache HBase, ja monet muut—voidaan käyttää vetämällä erilliset liittimet Kipinä Paketteja ekosysteemin.,

Valitsemalla joitakin sarakkeita on dataframe on niin yksinkertaista kuin tämä rivi:

citiesDF.select("name”, "pop”)

Käyttämällä SQL-käyttöliittymä, voimme rekisteröidä dataframe kuin tilapäinen taulukko, jonka jälkeen voimme kysymys SQL-kyselyjä vastaan:

citiesDF.createOrReplaceTempView("cities”)
spark.sql("SELECT name, pop FROM cities”)

Takana Apache Spark käyttää query optimizer kutsutaan Katalysaattori, joka tutkii tiedot ja kyselyt, jotta voidaan laatia tehokas kyselyn suunnitelma tietojen paikkakunnalla ja laskenta, joka suorittaa tarvittavat laskelmat klusterissa. Apassikipinässä 2.,x aikakausi, Spark SQL-käyttöliittymä dataframes ja aineistot (lähinnä kirjoitetaan dataframe, jotka voidaan tarkastaa käännöksen aika oikeellisuuden ja hyödyntää edelleen muistiin ja laskea optimointeja suorituksen aikana) on suositeltavaa lähestymistapaa kehitykseen. RDD-liitäntä on edelleen saatavilla, mutta suositellaan vain, jos tarpeitasi ei voida käsitellä Spark SQL-paradigman puitteissa.

Kipinä 2.4 käyttöön joukko sisäänrakennettu korkeamman asteen toimintoja manipuloimalla taulukot ja muut korkeamman asteen tietotyypit suoraan.,

Kipinä MLlib

Apache Spark myös nippuja kirjastot soveltamista koneoppimisen ja kaavio analyysi tekniikoita tietojen mittakaavassa. Spark MLlib sisältää puitteet luoda koneoppimista putkistoja, mahdollistaa helpon täytäntöönpanon ominaisuus louhinta, valikoimat, ja muunnokset tahansa jäsennelty tietokokonaisuus. MLlib mukana jaetaan toteutuksia klusterointi ja luokittelu algoritmit, kuten k-means klusterointi ja satunnainen metsät, jotka voidaan vaihtaa ja ulos custom putkistot helposti., Mallit voivat olla koulutettu tiedot tutkijat Apache Spark käyttäen R-tai Python, tallennettu käyttämällä MLlib, ja sitten tuodaan Java-tai Scala-pohjainen putki tuotantokäyttöön.

Huomaa, että kun Kipinä MLlib kattaa perus kone oppiminen, mukaan lukien luokittelu, regressio, klusterointi, ja suodatus, se ei sisällä tilat mallinnus ja koulutus syvät neuroverkot (ks. InfoWorld Kipinä MLlib arvostelu). Syväoppimisputkia on kuitenkin tekeillä.,

Kipinä GraphX

Kipinä GraphX on valikoima jaettu algoritmeja käsittelyn kuvaajan rakenteet, mukaan lukien täytäntöönpano Googlen PageRank. Nämä algoritmit käyttää Spark Core on RDD lähestymistapa mallinnus tiedot; GraphFrames paketin avulla voit tehdä kaavio toimintansa dataframes, mukaan lukien hyödyntämällä Katalysaattori optimizer kuvaaja kyselyt.

Spark Streaming

Spark Streaming oli varhainen lisäksi Apache Spark, että se auttoi saada pitoa ympäristöissä, joissa tarvitaan reaaliaikainen tai lähes reaaliaikainen käsittely., Aiemmin erä-ja stream-käsittely Apache Hadoopin maailmassa olivat erillisiä asioita. Voit kirjoittaa MapReduce koodi eräajo tarvitsee ja käyttää jotain Apache Storm oman real-time streaming vaatimukset. Tämä tietysti johtaa erilaisia codebases, että hänet on pidettävä ajan synkronointi sovelluksen toimialue huolimatta, että ne perustuvat täysin eri viitekehyksiä, jotka vaativat erilaisia resursseja, ja joissa eri operatiivisten koskee käynnissä niitä.,

Spark Streaming laajennettu Apache Spark käsite eräajo osaksi streaming rikkomalla stream alas jatkuva sarja microbatches, joka voi sitten manipuloida käyttäen Apache Spark API. Tällä tavoin koodi erä-ja streaming-toiminnot voi jakaa (enimmäkseen) sama koodi, käynnissä samaan kehykseen, mikä vähentää sekä kehittäjä ja operaattori yläpuolella. Kaikki voittavat.,

kritiikki Spark Streaming lähestymistapa on, että microbatching, tilanteissa, joissa alhainen latenssi vastaus tulevat tiedot tarvitaan, ei välttämättä pysty vastaamaan suorituskykyä muiden streaming-pystyy puitteet, kuten Apache Storm, Apache Flink, ja Apache Apex, jotka kaikki käyttää puhdasta streaming menetelmä, pikemminkin kuin microbatches.

strukturoitu striimaus

strukturoitu striimaus (lisätty Spark 2.x) on Spark Streaming mitä Spark SQL oli Spark Core APIs: korkeamman tason API ja helpompi abstraktio kirjoittaa sovelluksia., Rakenteen striimauksen tapauksessa korkeamman tason API antaa kehittäjille olennaisesti mahdollisuuden luoda äärettömiä suoratoistodataframeja ja dataseteja. Se ratkaisee myös joitakin erittäin todellisia kipupisteitä, joiden kanssa käyttäjät ovat kamppailleet aiemmissa puitteissa, erityisesti koskien tapahtuma-ajan aggregaatioita ja viestien myöhäistä toimittamista. Kaikki strukturoitujen virtojen kyselyt kulkevat Catalyst query Optimizerin kautta, ja niitä voidaan jopa käyttää interaktiivisesti, jolloin käyttäjät voivat suorittaa SQL-kyselyjä live-suoratoistotietoja vastaan.,

strukturoitu striimaus nojasi alun perin Spark streamauksen mikrobatchausjärjestelmään suoratoistodatan käsittelyssä. Mutta Kipinä 2.3 Apache Spark joukkue lisäsi alhainen latenssi Jatkuva Käsittely Tilassa Jäsennelty Streaming, jotta se voi käsitellä vasteet latenssit niinkin alhainen kuin 1ms, joka on erittäin vaikuttava. Spark 2.4: n mukaan jatkuvaa käsittelyä pidetään edelleen kokeellisena. Vaikka strukturoitu suoratoisto on rakennettu Spark SQL-moottorin päälle, jatkuva suoratoisto tukee vain rajoitettua kyselyjoukkoa.,

Rakenteeltaan Streaming on tulevaisuuden streaming sovelluksia alustan, joten jos olet rakentamassa uutta streaming sovellus, sinun tulee käyttää Strukturoituja Streaming. Perintö Spark Streaming Api tuetaan edelleen, mutta hanke suosittelee siirrettävyyttä yli Jäsennelty Streaming, koska uusi menetelmä tekee kirjallisesti ja ylläpitää streaming koodi paljon siedettävämpää.

Syvä Oppiminen Putkistojen

Apache Spark tukee syvällisen oppimisen kautta Syvä Oppiminen Putkistoja., Käyttämällä olemassa olevia putken rakenne MLlib, voit soittaa osaksi alemman tason syvä oppiminen kirjastot ja rakentaa luokittelijoita vain muutaman rivin koodia, sekä mukautettujen TensorFlow kaavioita tai Keras mallit saapuvat tiedot. Nämä kuvaajat ja mallit voidaan jopa olla rekisteröity custom Spark SQL udfs: n (user-defined functions) niin, että syvällisen oppimisen mallia voidaan soveltaa tiedot osana SQL lausuntoja.

Apache Spark tutorials

Ready to dive in and learn Apache Spark?, Suosittelemme Evan Heitman on Neandertalin Opas Apache Spark Python, joka ei ainoastaan vahvistetaan perusteet siitä, miten Apache Spark toimii suhteellisen yksinkertaisesti, mutta myös ohjaa sinut prosessin läpi kirjallisesti yksinkertainen Python-sovellus, joka käyttää framework. Artikkeli on kirjoitettu data scientist näkökulmasta, mikä on järkevää, koska data science on maailma, jossa big data ja koneoppimisen on yhä kriittinen.,

Jos etsit joitakin Apache Spark esimerkkejä antaa käsityksen siitä, mitä foorumi voi tehdä ja miten se toimii, tutustu Kipinä By {Esimerkkejä}. Siellä on runsaasti näytteen koodi täällä on useita perustehtäviä, jotka muodostavat rakennuspalikoita Kipinä ohjelmointi, joten voit nähdä osia, jotka muodostavat suurempia tehtäviä, jotka Apache Spark on tehty.

pitääkö mennä syvemmälle? DZone on, mitä se vaatimattomasti viittaa Täydellinen Apache Spark Kokoelma, joka koostuu liuta hyödyllisiä tutorials monet Apache Spark aiheita. Hyvää oppimista!

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Siirry työkalupalkkiin