Hvordan trinn for trinn forstå Apache gnistkildekode


Beste svaret

Jeg foreslår at du leser eldre versjoner av Sparks kode.

Vurder versjon 0.5 utgitt i 2012 apache / spark På den tiden hadde Spark bare rundt 70 kildekodefiler, og alle disse filene var små. Ta en titt på RDDs kildekode her: apache / spark Alt er så enkelt og konsist.

Vær også oppmerksom på at Sparks arkitektur ikke har t endret seg dramatisk siden. Utviklere nettopp lagt til mye feilhåndtering, optimaliseringer og integrering med eksterne teknologier som Garn eller Kafka.

Når du forstår hvordan Spark fungerte i 2012, ville det ikke være noe problem å forstå hvordan Spark fungerer i dag.

I tillegg foreslår jeg at du leser disse merknadene: JerryLead / SparkInternals . De gir intern arkitekturoversikt over Spark.

Svar

For å sparke tilbake på Noam Ben-Amis svar – HVIS du er en slutt-til-slutt-bruker, kan Spark være ganske uttømmende og vanskelig å lære.

Selv om du kjenner Bash, Python og SQL, er det bare toppen av isfjellet ved å bruke Spark. Hvis du skal «end-to-end» Spark vs en Python / SQL-skriptanalytiker, har den mange komponenter som i seg selv er store emner å lære.

Visst, du kan bruke Spark lokalt (den bærbare datamaskinen din) og uten Hadoop, men i den «virkelige verden» vil du ikke bruke Spark slik. Dette er hyggelig å lære noe av syntaksen, men gjør ingen feil, ingen vil ansette deg til å gjøre «Spark» i den sammenhengen (* ordspill beregnet).

Hele grunnen til å bruke Spark er ytelse og du sitter på toppen av et distribuert filsystem kalt «Big Data.» Det betyr at når du skriver kode for Spark-jobbene dine, forstår du ting som partisjoner, noder, serialisering, JVM, vcores, executors, minne, minne og disk, shuffles, komprimerte filer, søyleformater (parkett) og lignende hele veien måte å flytte data fra si S3 gjennom RDD, DataFrames, DataSets (bare Java / Scala) og Spark SQL til sluttdatasettet.

For meg er dette mye som når noen vil si at de vet » Excel ”og da vil du spørre dem om de kunne skrive en grunnleggende makro fra bunnen av, og de får det rådyret i frontlyset.

En mulig satsing på Spark vil omfatte:

  1. Bygg ut Hadoop-klyngen (noder, minne, EC2-forekomster osv.)
  2. YARN-konfigurasjon (noder, kjerner, forekomster, eksekverere, minneadministrasjon, drivere, overheadminne, kringkasting, i minnet og på diskhåndtering, osv.) – noen av disse kan henge / drepe jobbene dine, og du kommer ikke et skritt videre med enda trivielle mengder data hvis noen av disse ikke fungerer vi Det vil være dataene dine.
  3. Dokumentasjon for Spark RDDs
  4. Dokumentasjon for Spark DataFrames
  5. SQL-dokumentasjon for Spark
  6. Uansettelig skriver du kode inn # s 3–5 som vil avsløre problemene med nr. 2.
  7. På dette tidspunktet vil du sannsynligvis feilsøke minst Java-kode, og hvis du bruker Python, vil py4J gateway-feil til datatypeproblemer med Python og streaming av dataobjekter.

Mange mennesker kan skrive funksjoner / metoder mot RDD, DataFrames og Spark SQL på få minutter, og hvis de har litt erfaring med Python og SQL – kanskje til og med oppsluk RDD, DataFrames og SQL-dokumentasjon om noen dager – men når Spark-jobben din blir drept for en kringkasting, eksekutor, oppgave eller en minnefeil – vil ingenting av det ha noe å si. Du tar på deg Spark våtdrakt og drar et dypdykk i magen til Spark [Java].

Legg igjen en kommentar

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