Apache har en Gnist av sin arkitektoniske grunnlag i den solide fordelt dataset (RDD), en skrivebeskyttet multiset av data elementer fordelt over en klynge av maskiner, som opprettholdes i en feil-tolerant måte. Den Dataframe API ble lansert som en abstraksjon på toppen av RDD, etterfulgt av Dataset-API. I Gnist 1.x, RDD var den primære application programming interface (API), men som av Gnist 2.x bruk av Datasettet API er oppmuntret selv om RDD API er ikke utdatert. Den RDD teknologi fortsatt ligger til grunn for Datasettet API.,
Gnist og dens RDDs ble utviklet i 2012 i respons til begrensninger i MapReduce cluster computing paradigme, som tvinger en bestemt lineær dataflyt struktur på distribuerte programmer: MapReduce programmer lese input data fra harddisken, kan du tilordne en funksjon på tvers av data, redusere resultatene av kart, og lagre reduksjon resultater på disk. Gnist er RDDs fungere som et arbeidssett for distribuerte programmer som tilbyr en (bevisst) begrenset form for distribuert delt minne.,
Gnist forenkler implementeringen av både iterative algoritmer, som besøker sine data sett flere ganger i en løkke, og interaktiv/utforskende data analyse, dvs. gjentatte database-stil spørring av data. Ventetiden på slike programmer kan være redusert ved flere størrelsesordener i forhold til Apache Hadoop MapReduce gjennomføring.Innenfor klassen av iterativ algoritmer er det trening algoritmer for maskinlæring systemer, som dannet den første drivkraft for å utvikle Apache Gnist.
Apache Gnist krever en klynge manager og en distribuert lagring system., For cluster management, Gnist støtter frittstående (native Gnist klynge, der du kan starte en klynge enten manuelt eller bruke lanseringen skript gitt av install pakkenavn. Det er også mulig å kjøre disse daemoner på en enkelt maskin for testing), Hadoop GARN, Apache Mesos eller Kubernetes. For distribuert lagring, Gnist kan grensesnitt med bredt utvalg, inkludert Alluxio, Hadoop Distributed File System (HDFS), MapR File System (MapR-FS), Cassandra, OpenStack Swift, Amazon S3, Kudu, Glans file system, eller en tilpasset løsning som kan implementeres., Gnist støtter også en pseudo-distribuert lokal modus, brukes vanligvis kun for utvikling eller testing, hvor distribuert lagring er ikke nødvendig, og det lokale filsystemet, kan brukes i stedet, og i et slikt scenario, Gnist kjøres på en enkelt maskin med én utøver per CPU-kjerne.
Gnist CoreEdit
Gnist Core er grunnlaget for det samlede prosjektet. Det gir fordelt oppgave fordeling, planlegging, og grunnleggende i/O-funksjoner, eksponert gjennom en application programming interface (for Java, Python, Scala, .,NET og R) sentrert på RDD abstraksjon (Java API er tilgjengelig for andre JVM-språk, men er også anvendbar for noen andre ikke-JVM-språk som kan kobles til JVM, for eksempel Julia). Dette grensesnittet speil en funksjonell/høyere-ordens modell av programmering: en «driver» – programmet påkaller parallelle operasjoner som map, filter eller redusere på en RDD ved å sende en funksjon til en Gnist, som deretter tidsplaner funksjonen kjøres i parallell på klyngen. Disse operasjonene, og flere som blir med, tar RDDs som input og produserer nye RDDs., RDDs er uforanderlig og deres virksomhet er lat; feil-toleranse er oppnådd ved å holde oversikt av den «lineage» av hver RDD (sekvensen av operasjoner som produseres det), slik at det kan bli rekonstruert i tilfelle tap av data. RDDs kan inneholde alle typer Python .NET, Java, eller Scala objekter.
Foruten RDD-orientert funksjonell stil av programmering, Gnist gir to begrensede former for felles variabler: kringkasting variabler referanse lese-bare data som må være tilgjengelig på alle noder, mens akkumulatorer kan brukes til å programmere reduksjoner i en viktig stil.,
Et typisk eksempel på RDD-sentriske funksjonell programmering er følgende Scala-program som beregner frekvenser av alle ord som forekommer i et sett av tekst filer og skriver ut de mest vanlige. Hvert kart, flatMap (en variant av kartet) og reduceByKey tar en anonym funksjon som utfører en enkel operasjon på en enkelt data-objekt (eller et par av elementer), og gjelder argument for å forvandle en RDD inn i en ny RDD.,
Gnist SQLEdit
Gnist SQL er en komponent på toppen av Gnist Kjerne som introduserte en data-abstraksjon kalt DataFrames, som gir støtte for strukturerte og semi-strukturerte data. Gnist SQL gir et domene-spesifikke språk (DSL) for å manipulere DataFrames i Scala, Java, Python eller .NET. Det gir også SQL-språk støtte, med kommandolinje-grensesnitt og ODBC/JDBC-server. Selv om DataFrames mangler compile-time-type-kontrollere gis av RDDs, som av Gnist 2.0, den sterkt skrevet DataSet som er fullt støttet av Gnist SQL så vel.,
Gnist StreamingEdit
Gnist Streaming bruker Gnist Core er rask planlegging evnen til å utføre streaming analytics. Det ingests data i mini-grupper og utfører RDD transformasjoner på disse mini-grupper av data. Dette design gjør den samme sett av program-kode som er skrevet for batch analytics til å bli brukt i streaming analytics, og dermed tilrettelegge for enkel implementering av lambda-arkitektur. Imidlertid, dette bekvemmelighet kommer med straff av ventetid lik mini-batch varighet., Andre streaming data motorer som prosess hendelse hendelse enn i mini-grupper inkluderer Storm og streaming del av Flink. Gnist Streaming har støtte innebygd å konsumere fra Kafka, Flume, Twitter, ZeroMQ, Kinesis, og TCP/IP sockets.
I Gnist 2.x, en egen teknologi basert på Datasett, som kalles Strukturert Streaming, som har et høyere nivå grensesnittet er også gitt for å støtte streaming.
Gnist kan være utplassert i en tradisjonell lokal data center, så vel som i skyen.,
MLlib maskinlæring LibraryEdit
Gnist MLlib er en distribuert maskin-læring rammen på toppen av Gnist Kjerne som, skyldes i stor del til distribuert minne-basert Gnist arkitektur, er så mye som ni ganger så raskt som den disk-basert implementering brukes av Apache Elefantfører (i henhold til milepæler gjort av MLlib utviklere mot vekslende least squares (ALS) – implementeringer, og før Elefantfører selv fått en Gnist interface), og skalerer bedre enn Vowpal Wabbit.,, Gradient-Boosted Tree
GraphXEdit
GraphX er en distribuert graf-behandling rammen på toppen av Apache Gnist., Fordi det er basert på RDDs, som er uforanderlig, grafer er uforanderlig og dermed GraphX er uegnet for grafer som trenger å bli oppdatert, la alene i en overførbar måte som en grafdatabase. GraphX gir to separate Api for gjennomføring av massivt parallelle algoritmer (for eksempel PageRank): en Pregel abstraksjon, og en mer generell MapReduce-stil API. I motsetning til sin forgjenger Bagel, som formelt ble avverget i Gnist 1.6, GraphX har full støtte for eiendom grafer (grafer der egenskaper kan være knyttet til kantene og hjørnene).,
GraphX kan bli sett på som å være Gnisten i-minne-versjon av Apache Giraph, som brukes Hadoop disk-basert MapReduce.
Som Apache Gnist, GraphX opprinnelig startet som et forskningsprosjekt ved UC Berkeley er AMPLab og Databricks, og ble senere donert til Apache Software Foundation og Gnist-prosjektet.
Leave a Reply