Apache Spark har sit arkitektoniske fundament i resilient distributed datasæt (RDD), en read-only multiset af dataelementer fordelt over en klynge af maskiner, der opretholdes på en fejltolerant måde. Den Dataframe API blev udgivet som en abstraktion på toppen af RDD, efterfulgt af datasættet API. I Gnist 1.x, RDD var den primære application programming interface (API), men som af Spark 2.x brug af datasættets API tilskyndes, selvom RDD API ikke er forældet. RDD-teknologien ligger stadig til grund for datasættets API.,
Gnist og dens RDDs blev udviklet i 2012 reaktion på begrænsninger i den MapReduce cluster computing paradigme, der tvinger en bestemt lineær dataflow struktur på distribuerede programmer: MapReduce programmer læse input data fra disken, kort en funktion på tværs af de data, mindske den resultater af kortet, og opbevar reduktion resultater på disken. Sparks RDDs fungerer som et arbejdssæt til distribuerede programmer, der tilbyder en (bevidst) begrænset form for distribueret delt hukommelse.,Spark letter implementeringen af både iterative algoritmer, der besøger deres datasæt flere gange i en løkke og interaktiv/sonderende dataanalyse, dvs.den gentagne database-stil forespørgsel om data. Latenstiden af sådanne applikationer kan reduceres med flere størrelsesordener i forhold til Apache Hadoop MapReduce implementering.Blandt klassen af iterative algoritmer er træningsalgoritmerne til maskinlæringssystemer, som dannede den første impuls til udvikling af Apache Spark.Apache Spark kræver en klyngeadministrator og et distribueret lagersystem., Til klyngestyring understøtter Spark standalone (native Spark cluster, hvor du kan starte en klynge enten manuelt eller bruge lanceringsskripterne, der leveres af installationspakken. Det er også muligt at køre disse dæmoner på en enkelt maskine til test), Hadoop GARN, Apache Mesos eller Kubernetes. For distribueret lagring, Gnist kan interface med en bred vifte, herunder Alluxio, Hadoop Distributed File System (HDFS), MapR File System (MapR-FS), Cassandra, OpenStack Swift, Amazon S3, Kudu, Glans fil system, eller en skræddersyet løsning der kan gennemføres., Spark understøtter også en pseudo-distribueret lokal tilstand, der normalt kun bruges til udviklings-eller testformål, hvor distribueret opbevaring ikke er påkrævet, og det lokale filsystem kan bruges i stedet; i et sådant scenario køres Spark på en enkelt maskine med en eksekutor pr.
Spark Coreredit
Spark Core er grundlaget for det samlede projekt. Det giver distribueret opgave ekspedition, planlægning, og grundlæggende i/O-funktionaliteter, udsat gennem et program programmering interface (til Java, Python, Scala,.,NET og R) centreret om RDD-abstraktionen (Java API er tilgængelig for andre JVM-sprog, men kan også bruges til nogle andre ikke-JVM-sprog, der kan oprette forbindelse til JVM, såsom Julia). Denne grænseflade spejler en funktionel / højere ordens programmeringsmodel: et” driver ” – program påberåber parallelle operationer såsom kort, filter eller reducer på en RDD ved at sende en funktion til Spark, som derefter planlægger funktionens udførelse parallelt på klyngen. Disse operationer og yderligere operationer, såsom tilslutninger, tager RDD ‘er som input og producerer nye RDD’ er., RDD ‘ er er uforanderlige, og deres operationer er dovne; fejltolerance opnås ved at holde styr på “afstamningen” af hver RDD (sekvensen af operationer, der producerede den), så den kan rekonstrueres i tilfælde af tab af data. RDD ‘ er kan indeholde enhver type Python -,. net -, Java-eller Scala-objekter.udover den RDD-orienterede funktionelle programmeringsstil giver Spark to begrænsede former for delte variabler: broadcast variabler reference skrivebeskyttede data, der skal være tilgængelige på alle noder, mens akkumulatorer kan bruges til at programmere reduktioner i en imperativ stil.,
et typisk eksempel på RDD-centreret funktionel programmering er følgende Scala-program, der beregner frekvenserne for alle ord, der forekommer i et sæt tekstfiler og udskriver de mest almindelige. Hvert kort, flatMap (en variant af map) og reduceByKey tager en anonym funktion, der udfører en simpel operation på et enkelt dataelement (eller et par elementer), og anvender sit argument for at omdanne en RDD til en ny RDD.,
Spark s .ledit
Spark s .l er en komponent oven på Spark Core, der introducerede en dataabstraktion kaldet DataFrames, som understøtter strukturerede og semistrukturerede data. Spark SQL er et domæne-specifikke sprog (DSL) til at manipulere DataFrames i Scala, Java, Python eller .NETTO. Det giver også SQL-sproget support, med mgp og ODBC/JDBC-server. Selvom DataFrames mangler den kompileringstidstypekontrol, der ydes af RDDs, fra Spark 2.0, understøttes det stærkt indtastede datasæt også fuldt ud af Spark s .l.,
Spark StreamingEdit
Spark Streaming bruger Spark Core hurtige planlægning evne til at udføre streaming analytics. Det indtager data i mini-batches og udfører RDD transformationer på disse mini-batches af data. Dette design gør det muligt at bruge det samme sæt applikationskode, der er skrevet til batchanalyse, i streaminganalyse, hvilket letter nem implementering af lambda-arkitektur. Denne bekvemmelighed kommer dog med straffen for latenstid svarende til mini-batch varighed., Andre streamingdatamotorer, der behandler begivenhed for begivenhed snarere end i mini-batches, inkluderer Storm og Streamingkomponenten i Flink. Spark Streaming har support Indbygget til at forbruge fra Kafka, Flume, t .itter, .erom., Kinesis og TCP/IP-stik.
i gnist 2.separate, en separat teknologi baseret på datasæt, kaldet Structured Streaming, der har et interface på højere niveau, leveres også til at understøtte streaming.Spark kan implementeres i et traditionelt lokalt datacenter såvel som i skyen.,
MLlib Machine Learning LibraryEdit
Gnist MLlib er et distribueret machine-learning ramme på toppen af Spark Kerne, der, i vid udstrækning skyldes, at det udloddede hukommelse-baseret Gnist arkitektur, er så meget som ni gange så hurtigt som den disk-baserede implementering, der anvendes af Apache Mahout (ifølge benchmarks er udført af MLlib udviklere mod de skiftende mindste kvadraters (ALS) implementeringer, og før Mahout selv fået en Gnist interface), og skalerer bedre end Vowpal Wabbit., Gradient-Boostet Træ
GraphXEdit
GraphX er et distribueret graf-behandling ramme på toppen af Apache Gnist., Fordi det er baseret på RDD ‘ er, som er uforanderlige, er grafer uforanderlige, og Graph.er derfor uegnet til grafer, der skal opdateres, endsige på en transaktionsmæssig måde som en grafdatabase. Graph.giver to separate API ‘ er til gennemførelse af massivt parallelle algoritmer (såsom PageRank): en Pregel abstraktion, og en mere generel MapReduce-stil API. I modsætning til sin forgænger Bagel, som formelt blev udskrevet i Spark 1.6, har Graph.Fuld understøttelse af egenskabsgrafer (grafer, hvor egenskaber kan fastgøres til kanter og hjørner).,
Graph.kan ses som værende den gnist in-memory version af Apache Giraph, som udnyttede Hadoop disk-baseret MapReduce.
Som Apache Gnist, GraphX oprindeligt startede som et forskningsprojekt på UC Berkeley ‘ s AMPLab og Databricks, og blev senere doneret til Apache Software Foundation og Gnisten projekt.
Leave a Reply