Hva er Apache Gnist? Big data-plattform som knust Hadoop

Apache Gnist definert

Apache Gnist er en data processing rammeverk som raskt kan utføre behandling oppgaver på svært store datasett, og kan også distribuere data prosessering oppgaver på tvers av flere datamaskiner, enten på egen hånd eller sammen med andre distribuert databehandling verktøy. Disse to egenskapene er viktige for å verdener av big data og maskinlæring, som krever hensyn til formidlinger av massiv datakraft til å knase gjennom store datalagre., Gnist tar også noen av de programmering byrder av disse oppgavene off skuldrene til utviklere med en lett-å-bruke API som abstracts bort mye av grynt arbeid av distribuert databehandling og big data processing.

Fra den spede begynnelse i AMPLab på U. C. Berkeley i 2009, Apache Gnist har blitt en av de viktigste big data distribuert prosessering rammeverk i verden. Gnist kan tas i bruk i en rekke måter, gir native bindinger for Java, Scala, Python, og R programmeringsspråk, og støtter SQL, streaming data -, maskin-læring, og grafen behandling., Du vil finne at det er brukt av banker, telekommunikasjonsselskaper, spill selskaper, regjeringer og alle de store tech giganter som Apple, Facebook, IBM og Microsoft.

Apache Gnist arkitektur

På et grunnleggende nivå, en Apache-Gnist-programmet består av to hovedkomponenter: en driver, som konverterer brukerens koden inn flere oppgaver som kan distribueres på tvers av arbeidstaker noder, og executors, som kjører på disse nodene og utføre de oppgaver som er tillagt dem. Noen form for cluster manager er nødvendig for å megle mellom de to.,

Ut av boksen, Gnist kan kjøre i en frittstående klynge-modus som gjør at Apache Gnist framework og java virtual machine på hver maskin i klyngen. Det er imidlertid mer sannsynlig at du får lyst til å dra nytte av en mer robust ressurs eller cluster management system for å ta vare på tildeling av arbeidere på etterspørselen etter deg. I foretaket, vil dette normalt bety kjører på Hadoop GARN (dette er hvordan Cloudera og Hortonworks distribusjoner kjøre Gnist jobber), men Apache Gnist kan også kjøre på en Apache-Mesos, Kubernetes, og Docker Sverm.,

Hvis du søker en administrert løsning, så Apache Gnist kan bli funnet som en del av Amazon EMR Google Cloud Dataproc, og Microsoft Azure HDInsight. Databricks, selskapet som sysselsetter grunnleggerne av Apache Gnist, tilbyr også Databricks Unified Analytics-Plattformen, som er en omfattende administrert tjeneste som tilbyr Apache Gnist klynger, streaming støtte, integrert web-basert bærbar utvikling, og som er optimalisert for nettskyen i/O-ytelse over en standard Apache Gnist distribusjon.

Apache Gnist bygger brukerens data processing kommandoer i en Directed Acyclic Graph, eller DAG., I DAG er Apache Gnist er planlegging lag; den bestemmer hvilke oppgaver som utføres på hva noder og i hvilken rekkefølge.

Gnist vs. Hadoop: Hvorfor bruke Apache Gnist?

Det er verdt å peke på at Apache Gnist vs. Apache Hadoop er litt misvisende. Du finner Gnist inkludert i de fleste Hadoop-distribusjoner i disse dager. Men på grunn av to store fordeler, Gnist har blitt rammen av valg ved behandling av store datamengder, forbikjøring den gamle MapReduce paradigme som brakte Hadoop til prominens.

Den første fordelen er hastighet., Gnist er data i minnet motor betyr at den kan utføre oppgaver opp til hundre ganger raskere enn MapReduce i visse situasjoner, særlig når sammenlignet med multi-trinns jobber som krever skriving av staten tilbake til disk mellom stadier. I hovedsak, MapReduce skaper en to-trinns utførelse graf bestående av data kartlegging og reduksjon, mens Apache Gnist er DAG har flere stadier, som kan fordeles på en mer effektiv måte. Selv Apache Gnist jobber der dataene ikke kan være helt inneholdt i minnet har en tendens til å være rundt 10 ganger raskere enn sine MapReduce motstykke.,

Den andre fordelen er developer-vennlig Spark API. Like viktig som Gnist er speedup er, man kunne argumentere for at vennlighet av Gnist-API-er enda mer viktig.

Gnist Core

I forhold til MapReduce og andre Apache Hadoop-komponenter, Apache Gnist API er svært vennlig til utviklere, skjule mye av kompleksiteten i et distribuert prosessering motor bak enkel metode samtaler., Den kanoniske eksempel på dette er hvordan nesten 50 linjer av MapReduce-koden for å telle ord i et dokument, kan bli redusert til bare et par linjer av Apache Gnist (her vist i Scala):

Ved å gi bindinger til populære språkene for dataanalyse som Python og R, samt mer business-vennlig Java og Scala, Apache Gnist kan alle fra programmet utviklere til data som er forskere utnytte sin skalerbarhet og hastighet på en tilgjengelig måte.,

Gnist RDD

i hjertet av Apache Gnist er begrepet Spenstig Fordelt Dataset (RDD), en programmering abstraksjon som representerer en uforanderlig samling av objekter som kan være delt på tvers av et cluster computing. Operasjoner på RDDs kan også deles på tvers av klyngen og gjennomføres parallelt i en batch prosess, som fører til rask og skalerbar parallell prosessering.

RDDs kan lages med enkle tekstfiler, SQL databaser, NoSQL butikkene (for eksempel Cassandra og MongoDB), Amazon S3 bøtter, og mye mer i tillegg., Mye av Gnisten Core API er bygget på denne RDD-konseptet, slik at tradisjonelle kart og reduserer funksjonaliteten, men også gir innebygd støtte for å bli med datasett, filtrering, prøvetaking, og aggregering.

Gnist går i et distribuert mote ved å kombinere en driver kjerne-prosessen som deler en Gnist-programmet inn i oppgaver og distribuerer dem blant mange eksekutor prosesser som gjør jobben. Disse executors kan skaleres opp og ned det som er nødvendig for programmets behov.,

Gnist SQL

Opprinnelig kjent som Hai, Gnist SQL har blitt mer og mer viktig for Apache-Gnist-prosjektet. Det er sannsynlig at grensesnittet er mest brukt av dagens utviklere når du lager apper. Gnist SQL er fokusert på behandling av strukturerte data, ved hjelp av en dataframe tilnærming lånt fra R og Python (i Pandaer). Men som navnet antyder, Gnist SQL gir også en SQL2003-kompatibel grensesnitt for spørring data, å bringe kraften av Apache Gnist analytikere, så vel som utviklere.,

Sammen med standard SQL støtte, Gnist SQL gir et standard grensesnitt for lesing fra og skriving til andre datastores inkludert JSON, HDFS, Apache Hive, JDBC, Apache ORK, og Apache Tregulv, alle som støttes ut av boksen. Andre populære butikkene—Apache Cassandra, MongoDB, Apache HBase, og mange andre—kan brukes ved å trekke i separate tilkoblinger fra Gnist Pakker økosystemet.,

Velge noen kolonner fra en dataframe er så enkel som dette linje:

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

ved Hjelp av SQL-grensesnitt, vi registrerer dataframe som en midlertidig tabell, etter som vi kan utstede SQL-spørringer mot det:

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

Bak kulissene, Apache Gnist som bruker en spørring optimizer kalt Katalysator som undersøker dataene og spørringer for å produsere en effektiv query plan for data lokalitet og beregning som skal utføre nødvendige beregninger på tvers av klyngen. I Apache Gnist 2.,x-epoken Gnist SQL-grensesnittet av dataframes og datasett (i hovedsak skrevet dataframe som kan kontrolleres på kompilere tid for riktigheten og dra nytte av ytterligere minne og beregne optimaliseringer på kjøre-tid) er den anbefalte metoden for utvikling. Den RDD-grensesnittet er fortsatt tilgjengelig, men anbefales bare dersom behovene ikke kan løses innenfor Gnist SQL paradigme.

Gnist 2.4 innført et sett av innebygde høyere-ordens funksjoner for å manipulere matriser og andre høyere-orden typer data direkte.,

Gnist MLlib

Apache Gnist også bunter biblioteker for bruk av maskinlæring og tegne grafer teknikker for analyse av data i stor skala. Gnist MLlib inneholder et rammeverk for å lage maskin læring rørledningene, med mulighet for en enkel gjennomføring av egenskapsuttrekking, valg, og transformasjoner på noen strukturerte datasett. MLlib kommer med distribuert implementering av gruppering og klassifisering av algoritmer, slik som k-betyr clustering og tilfeldig skoger, som kan byttes inn og ut av tilpasset rørledninger med letthet., Modeller kan være opplært av data forskere i Apache Gnist ved hjelp av R-eller Python, lagret ved hjelp av MLlib, og deretter importeres inn i en Java-basert eller Scala-basert rørledning for produksjon bruk.

Merk at mens Gnist MLlib dekker grunnleggende maskinlæring inkludert klassifisering, regresjon, gruppering og filtrering, det gjør ikke inkluderer fasiliteter for modellering og opplæring dyp nevrale nettverk (for detaljer, se InfoWorld er Gnist MLlib gjennomgang). Imidlertid er Dyp Læring Rørledninger er i arbeid.,

Gnist GraphX

Gnist GraphX leveres med et utvalg av distribuerte algoritmer for behandling av grafen strukturer, inkludert en implementering av Googles PageRank. Disse algoritmene bruker Gnist Core er RDD tilnærming til modellering av data; den GraphFrames package gir deg mulighet til å gjøre grafen operasjoner på dataframes, herunder å ta nytte av Katalysator optimizer for grafen spørringer.

Gnist Streaming

Gnist Streaming var en tidlig tillegg til Apache Gnist, som hjalp til med det få trekkraft i miljøer som kreves i sanntid eller i nærheten real-time prosessering., Tidligere, batch og stream behandling i verden av Apache Hadoop var separate ting. Du ville skrive MapReduce-kode for batch prosessering behov og bruk noe som Apache Storm for din real-time streaming krav. Dette selvfølgelig fører til ulike codebases som må holdes i sync for søknaden domenet til tross for å være basert på helt forskjellige rammer, krever ulike ressurser, og som involverer ulike operative oppgaver for å kjøre dem.,

Gnist Streaming utvidet Apache Gnist begrepet satsvis behandling i streaming ved å bryte strømmen ned i en sammenhengende serie av microbatches, som kan deretter bli manipulert ved hjelp av Apache Gnist API. På denne måten kode i batch og streaming operasjoner kan dele (for det meste) den samme koden, som kjører på samme framework, og dermed redusere både utbygger og operatør overhead. Alle vinner.,

En kritikk av Gnist Streaming tilnærming er at microbatching, i scenarier der en low-latency svar på innkommende data som kreves, kan du ikke være i stand til å matche ytelsen til andre streaming-er i stand rammer som Apache Storm, Apache Flink, og Apache Apex, alle som bruker en ren streaming metode snarere enn microbatches.

Strukturert Streaming

Strukturert Streaming (lagt i Gnist 2.x) er å Vekke Streaming hva Gnist SQL var til Gnist Core Api-er: Et høyere nivå API og enklere abstraksjon for å skrive programmer., I tilfelle av Struktur Direkteavspilling på høyere nivå API hovedsak lar utviklere lage uendelig streaming dataframes og datasett. Det er også løser noen svært reell smerte poeng at brukere har slitt med i de tidligere rammeverk, spesielt når det gjelder å håndtere hendelsen-tid grupper celler og sen levering av meldinger. Alle henvendelser på strukturert bekker gå gjennom Katalysator query optimizer, og kan også kjøres på en interaktiv måte, slik at brukerne å utføre SQL-spørringer mot live streaming data.,

Strukturert Streaming opprinnelig lettelse opp på Gnist Streaming er microbatching ordningen for håndtering streaming data. Men i Gnist 2.3, Apache Gnist team lagt en lav latens Kontinuerlig Prosessering Modus til Strukturert Streaming, slik at det å håndtere svar med latencies så lavt som 1ms, noe som er svært imponerende. Som av Gnist 2.4, Kontinuerlig Behandling er fortsatt anses som eksperimentell. Mens Strukturert Streaming er bygget på toppen av Gnist SQL-motoren, Kontinuerlig Streaming støtter bare et begrenset sett av spørringer.,

Strukturert Streaming er fremtiden for streaming applikasjoner med plattformen, så hvis du bygger en ny streaming program, bør du bruke Strukturerte Streaming. Arven Gnist Streaming Api-er vil fortsette å være støttet, men prosjektet anbefaler portert over til Strukturert Streaming, som den nye metoden gjør skriving og vedlikehold av streaming-koden en mye mer utholdelig.

dybdekunnskap Rørledninger

Apache Gnist støtter dyp læring via dybdekunnskap Rørledninger., Ved hjelp av den eksisterende rørledningen struktur av MLlib, kan du ringe til lavere nivå dybdekunnskap biblioteker og konstruere classifiers i bare noen få linjer med kode, samt bruke tilpassede TensorFlow grafer eller Keras modeller for innkommende data. Disse grafene og modeller kan også være registrert som tilpasset Gnist SQL UDFs (brukerdefinerte funksjoner) slik at den dype læring modeller kan brukes til data som en del av SQL-setninger.

Apache Gnist tutorials

Klar til å dykke i og lære Apache Gnist?, Vi anbefaler Evan Heitman er En Neandertaler Guide til Apache Gnist i Python, som ikke bare legger ut det grunnleggende om hvordan Apache Gnist fungerer i relativt enkle termer, men også guider deg gjennom prosessen med å skrive en enkel Python-program som gjør bruk av rammeverket. Artikkelen er skrevet fra en data-forsker perspektiv, noe som gir mening som data vitenskap er en verden der big data og maskin-læring er stadig mer kritisk.,

Hvis du leter etter noen Apache Gnist eksempler for å gi deg en følelse av hva plattformen kan gjøre, og hvordan den gjør det, sjekk ut Gnist Av {Eksempler}. Det er nok av eksempler på kode her for en rekke av de grunnleggende oppgaver som utgjør byggesteinene i Gnist programmering, slik at du kan se de komponentene som utgjør større oppgaver som Apache Gnist er laget for.

Trenger å gå dypere? DZone har det beskjedent refererer til som Fullstendig Apache Gnist Collection, som består av en slew av nyttige veiledninger på mange Apache Gnist emner. Glad for å lære!

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

Hopp til verktøylinje