Hvad er Apache Spark? Big data platform, der knuste Hadoop

Apache Gnist, der er defineret

Apache Gnist er et edb-ramme, der hurtigt kan udføre behandlingen opgaver på meget store datasæt, og kan også distribuere databehandling opgaver på tværs af flere computere, enten på egen hånd eller sammen med andre distribueret computing værktøjer. Disse to kvaliteter er nøglen til verdener af big data og machine learning, som kræver sortering af massiv computerkraft til stykket gennem store datalagre., Spark tager også nogle af programmeringsbyrderne af disse opgaver fra udviklernes skuldre med en brugervenlig API, der abstracts væk meget af det grunt arbejde med distribueret computing og big data processing.

Fra sin ydmyge begyndelse i AMPLab på U. C. Berkeley i 2009, Apache Gnist er blevet en af de vigtigste big data distribueret databehandling rammer i verden. Spark kan implementeres på forskellige måder, giver native bindinger til programmeringssprogene Java, Scala, Python og R og understøtter s .l, streaming af data, maskinlæring og grafbehandling., Du finder det brugt af banker, teleselskaber, spilfirmaer, regeringer og alle de store tech-giganter som Apple, Facebook, IBM og Microsoft.

Apache Gnist arkitektur

På et grundlæggende niveau, en Apache Gnist programmet består af to hovedkomponenter: en chauffør, som konverterer brugerens kode til flere opgaver, der kan være fordelt over arbejdstager noder, og funktionærer, der kører på dem, noder og udføre de opgaver, som er betroet dem. En eller anden form for klyngeleder er nødvendig for at mægle mellem de to.,

ud af boksen kan Spark køre i en selvstændig klyngetilstand, der blot kræver Apache Spark-rammen og en JVM på hver maskine i din klynge. Det er dog mere sandsynligt, at du vil drage fordel af et mere robust ressource-eller klyngestyringssystem for at tage sig af at tildele arbejdstagere efter behov for dig. I virksomheden, vil dette normalt betyde, at der kører på Hadoop GARN (dette er, hvordan Cloudera og Hortonworks distributioner køre Gnist job), men Apache Gnist kan også køre på Apache Mesos, Kubernetes, og Dokker Sværm.,

Hvis du søger en administreret løsning, så Apache Gnist kan findes som en del af Amazon-EMR, Google Cloud Dataproc, og Microsoft Azure HDInsight. Databricks, det selskab, der beskæftiger grundlæggerne af Apache Gnist, tilbyder også Databricks Samlet Analytics Platform, som er en omfattende service, der tilbyder Apache Gnist klynger, streaming support, integreret web-baseret notebook udvikling, og optimeret cloud I/O-ydeevne over en standard Apache Gnist distribution.Apache Spark bygger brugerens databehandlingskommandoer i en rettet acyklisk graf eller DAG., DAG er Apache Sparks planlægningslag; det bestemmer, hvilke opgaver der udføres på hvilke noder og i hvilken rækkefølge.

Spark vs. Hadoop: Hvorfor bruge Apache Spark?

det er værd at påpege, at Apache Spark vs. Apache Hadoop er lidt af en misvisende. Du finder Spark inkluderet i de fleste Hadoop-distributioner i disse dage. Men på grund af to store fordele er Spark blevet den valgte ramme, når man behandler big data, og overhaler det gamle MapReduce-paradigme, der bragte Hadoop til prominens.

den første fordel er hastighed., Gnist er in-memory-data motor betyder, at det kan udføre opgaver op til hundrede gange hurtigere end MapReduce i visse situationer, især når der sammenlignes med multi-fase job, der kræver skrivning af staten tilbage på disk mellem faser. I det væsentlige skaber MapReduce en to-trins udførelsesgraf bestående af datakortlægning og reduktion, mens Apache Sparks DAG har flere faser, der kan distribueres mere effektivt. Selv Apache gnister job, hvor dataene ikke kan være fuldstændigt indeholdt i hukommelsen, har en tendens til at være omkring 10 gange hurtigere end deres MapReduce-modstykke.,

den anden fordel er den udviklervenlige Spark API. Så vigtig som Sparks speedup er, kan man argumentere for, at Spark API ‘ s venlighed er endnu vigtigere.

Spark Core

i sammenligning med MapReduce og andre Apache Hadoop-komponenter er Apache Spark API meget venlig over for udviklere og skjuler meget af kompleksiteten af en distribueret behandlingsmotor bag enkle metodekald., Den kanoniske eksempel på dette er, hvordan næsten 50 linjer af MapReduce kode for at tælle ord i et dokument, kan blive reduceret til blot et par linier af Apache Gnist (her vist i Scala):

Ved at give bindinger til populære sprog til analyse af data som Python og F, samt de mere virksomheds-venligt Java og Scala, Apache Gnist giver alle, fra udviklere til at data forskere til at udnytte sin skalerbarhed og hastighed på en tilgængelig måde.,

Gnist FUD

i hjertet af Apache Gnist er begrebet af den Robuste Distribuerede Datasæt (FUD), et programmeringssprog abstraktion, der repræsenterer en uforanderlig samling af objekter, der kan være fordelt på en it klynge. Operationer på RDD ‘ erne kan også opdeles på tværs af klyngen og udføres i en parallel batchproces, hvilket fører til hurtig og skalerbar parallel behandling.

RDDs kan oprettes fra simple tekstfiler, s .l databaser, nos .l butikker (såsom Cassandra og MongoDB), Ama .on S3 spande, og meget mere udover., Meget af Spark Core API er bygget på dette RDD-koncept, der muliggør traditionelt kort og reducerer funktionalitet, men giver også indbygget support til sammenføjning af datasæt, filtrering, prøveudtagning og aggregering.Spark kører på en distribueret måde ved at kombinere en driverkerneproces, der opdeler en Spark-applikation i opgaver og distribuerer dem blandt mange eksekutorprocesser, der udfører arbejdet. Disse eksekutorer kan skaleres op og ned efter behov for programmets behov.,

Spark s .l

oprindeligt kendt som Shark, er Spark s .l blevet mere og mere vigtigt for Apache Spark-projektet. Det er sandsynligvis den grænseflade, der oftest bruges af nutidens udviklere, når du opretter applikationer. Spark SQL er fokuseret på behandling af strukturerede data, ved hjælp af en dataframe tilgang lånt fra R og Python (i Pandas). Men som navnet antyder, giver Spark s .l også en s .l2003-kompatibel grænseflade til forespørgsel om data, hvilket bringer Apache Sparks magt til analytikere såvel som udviklere.,

Sammen med standard-SQL-støtte, Spark SQL er et standard interface til læsning fra og skrivning til andre datastores, herunder JSON, HDFS, Apache Hive, JDBC, Apache ORC, og Apache-Parketgulv, som understøttes ud af boksen. Andre populære butikker—Apache Cassandra, MongoDB, Apache HBase, og mange andre—kan bruges ved at trække i separate stik fra den Gnist Pakker økosystem.,

Valg af nogle kolonner fra en dataframe er så simpelt som at denne linje:

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

ved Hjælp af SQL-grænseflade, vil vi registrere de dataframe som en midlertidig tabel, hvorefter vi kan udstede SQL-forespørgsler mod det:

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

Bag kulisserne, Apache Spark bruger en query optimizer kaldet Katalysator, der undersøger data og forespørgsler for at lave en effektiv søgning plan for data lokalitet og beregning, der vil udføre de nødvendige beregninger på tværs af klyngen. I Apache Spark 2.,Spark era, Spark s .l-grænsefladen til dataframes og datasæt (i det væsentlige en indtastet dataframe, der kan kontrolleres på kompileringstidspunktet for korrekthed og drage fordel af yderligere hukommelse og beregne optimeringer ved køretid) er den anbefalede tilgang til udvikling. RDD-grænsefladen er stadig tilgængelig, men anbefales kun, hvis dine behov ikke kan løses inden for Spark s .l-paradigmet.Spark 2.4 introducerede et sæt indbyggede funktioner med højere orden til direkte manipulation af arrays og andre datatyper med højere orden.,

Spark MLlib

Apache Spark samler også biblioteker til anvendelse af maskinlæring og grafanalyseteknikker til data i skala. Spark MLlib indeholder en ramme for at skabe machine learning rørledninger, giver mulighed for nem implementering af funktionen udvinding, markeringer og transformationer på enhver struktureret datasæt. MLlib kommer med distribuerede implementeringer af klyngedannelse og klassificering algoritmer såsom K-betyder klyngedannelse og tilfældige skove, der kan byttes ind og ud af brugerdefinerede rørledninger med lethed., Modeller kan trænes af dataforskere i Apache Spark ved hjælp af R eller Python, gemt ved hjælp af MLlib, og derefter importeres til en Java-baseret eller Scala-baseret rørledning til produktionsbrug.

Bemærk, at mens Gnist MLlib dækker grundlæggende machine learning, herunder klassificering, regression, gruppering og filtrering, er det ikke omfatter faciliteter til modellering og uddannelse dybt neurale netværk (for yderligere oplysninger se InfoWorld ‘ s Gnist MLlib review). Men dyb læring rørledninger er i værkerne.,

Spark Graph.

Spark Graph. leveres med et udvalg af distribuerede algoritmer til behandling af grafstrukturer, herunder en implementering af Googles PageRank. Disse algoritmer brug Gnist Core ‘ s FUD tilgang til modellering af data; de GraphFrames pakke giver dig mulighed for at gøre graf-operationer på dataframes, herunder at drage fordel af den Katalysator optimizer for graf forespørgsler.

Spark Streaming

Spark Streaming var en tidlig tilføjelse til Apache Spark, der hjalp det med at få trækkraft i miljøer, der krævede realtid eller i nærheden af realtidsbehandling., Tidligere batch og stream behandling i verden af Apache Hadoop var separate ting. Du vil skrive MapReduce-kode til dine batchbehandlingsbehov og bruge noget som Apache Storm til dine streamingkrav i realtid. Dette fører naturligvis til forskellige kodebaser, der skal holdes synkroniseret for applikationsdomænet på trods af at de er baseret på helt forskellige rammer, der kræver forskellige ressourcer og involverer forskellige operationelle bekymringer for at køre dem.,Gniststreaming udvidede Apache Spark-konceptet med batchbehandling til streaming ved at bryde strømmen ned i en kontinuerlig række mikrobatches, som derefter kunne manipuleres ved hjælp af Apache Spark API. På denne måde kan kode i batch-og streamingoperationer dele (for det meste) den samme kode, der kører på den samme ramme, hvilket reducerer både udvikler-og operatøroverhead. Alle vinder.,

En kritik af den Gnist Streaming tilgang er, at microbatching, i scenarier hvor en low-latency svar på indgående data er påkrævet, kan ikke være i stand til at matche andre streaming-stand rammer som Apache Storm, Apache Flink, og Apache Apex, alle der bruger en ren streaming-metode snarere end microbatches.

Struktureret Streaming

Struktureret Streaming (tilføjet i Spark 2.x) er at gnist Streaming hvad Spark s .l var til Spark Core API ‘ er: et højere niveau API og lettere abstraktion til at skrive applikationer., I tilfælde af Strukturstreaming giver API ‘ en på højere niveau i det væsentlige udviklere mulighed for at oprette uendelige streamingdatarammer og datasæt. Det løser også nogle meget virkelige smertepunkter, som brugerne har kæmpet med i de tidligere rammer, især hvad angår håndtering af begivenhedstidsaggregeringer og forsinket levering af meddelelser. Alle forespørgsler på strukturerede streams går gennem Catalyst queryuery optimi .er og kan endda køres på en interaktiv måde, så brugerne kan udføre s .l-forespørgsler mod live streaming data.,struktureret Streaming var oprindeligt afhængig af Spark Streaming ‘ s mikrobatching-ordning til håndtering af streamingdata. Men i Spark 2.3 tilføjede Apache Spark-teamet en kontinuerlig behandlingstilstand med lav latens til struktureret Streaming, så den kunne håndtere svar med latenser så lave som 1ms, hvilket er meget imponerende. Fra Spark 2.4 betragtes kontinuerlig behandling stadig som eksperimentel. Mens struktureret Streaming er bygget oven på Spark s .l-motoren, understøtter kontinuerlig Streaming kun et begrænset sæt forespørgsler.,struktureret Streaming er fremtiden for streaming-applikationer med platformen, så hvis du bygger en ny streaming-applikation, skal du bruge struktureret Streaming. Legacy Spark Streaming API ‘ erne vil fortsat blive understøttet, men projektet anbefaler at overføre til struktureret Streaming, da den nye metode gør skrivning og vedligeholdelse af streamingkode meget mere tålelig.

dybe Læringsrørledninger

Apache Spark understøtter dyb læring via dybe Læringsrørledninger., Ved hjælp af den eksisterende rørledningsstruktur i MLlib kan du ringe til biblioteker med dyb læring på lavere niveau og konstruere klassifikatorer på bare et par kodelinjer samt anvende tilpassede tensorflo.-grafer eller Keras-modeller til indgående data. Disse grafer og modeller kan endda registreres som brugerdefinerede Spark s .l UDFs (brugerdefinerede funktioner), så de dybe læringsmodeller kan anvendes på data som en del af s .l-sætninger.

Apache Spark tutorials

klar til at dykke ind og lære Apache Spark?, Vi anbefaler, Evan Heitman er En Neanderthal Guide til Apache Gnist i Python, som ikke kun indeholder det grundlæggende i, hvordan Apache Gnist virker i relativt enkle vendinger, men også guider dig gennem processen med at skrive et simpelt Python program, der gør brug af rammerne. Artiklen er skrevet ud fra en dataforskers perspektiv, hvilket giver mening, da datavidenskab er en verden, hvor big data og maskinlæring bliver mere og mere kritiske.,

Hvis du leder efter nogle Apache Spark eksempler til at give dig en fornemmelse af, hvad platformen kan gøre, og hvordan det gør det, tjek Spark af {eksempler}. Der er masser af prøvekode her for en række af de grundlæggende opgaver, der udgør byggestenene til Spark-programmering, så du kan se de komponenter, der udgør de større opgaver, som Apache Spark er lavet til.

behov for at gå dybere? D .one har hvad det beskedent refererer til som den komplette Apache Spark Collection, som består af en masse nyttige tutorials på mange Apache Spark emner. Glad læring!

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

Videre til værktøjslinje