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:
- Bygg ut Hadoop-klyngen (noder, minne, EC2-forekomster osv.)
- 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.
- Dokumentasjon for Spark RDDs
- Dokumentasjon for Spark DataFrames
- SQL-dokumentasjon for Spark
- Uansettelig skriver du kode inn # s 3–5 som vil avsløre problemene med nr. 2.
- 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].