Sådan trin for trin forstå Apache gnistkildekode


Bedste svar

Jeg foreslår, at du læser ældre versioner af Sparks kode.

Overvej version 0.5 udgivet i 2012 apache / spark På det tidspunkt havde Spark kun omkring 70 kildekodefiler, og alle disse filer var små. Se på RDDs kildekode her: apache / spark Alt er så simpelt og koncist.

Bemærk også, at Sparks arkitektur ikke har t ændret sig dramatisk siden. Udviklere tilføjede netop en masse fejlhåndtering, optimeringer og integration med eksterne teknologier som Garn eller Kafka.

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

Derudover foreslår jeg, at du læser disse noter: JerryLead / SparkInternals . De giver intern arkitekturoversigt over Spark.

Svar

At piggy tilbage på Noam Ben-Amis svar – HVIS du er en ende-til-slut-bruger, kan Spark være ret udtømmende og svært at lære.

Selvom du kender Bash, Python og SQL, er det kun toppen af ​​isbjerget ved at bruge Spark. Hvis du går “end-to-end” Spark vs en Python / SQL-scriptanalytiker, har den mange komponenter, der i sig selv er store emner at lære.

Sikker på, du kan bruge Spark lokalt (din bærbare computer) og uden Hadoop, men i den “virkelige verden” bruger du ikke Spark sådan. Dette er rart at lære noget af syntaksen, men tag ikke fejl, ingen vil ansætte dig til at gøre “Spark” i den sammenhæng (* ordspil beregnet).

Hele grunden til at bruge Spark er ydeevne og du sidder oven på et distribueret filsystem, aka “Big Data.” Det betyder, at når du skriver kode til dine Spark-job, forstår du ting som partitioner, noder, serialisering, JVM, vcores, eksekutorer, hukommelse, hukommelse og disk, shuffles, komprimerede filer, søjleformater (parket) og lignende hele vejen igennem måde at flytte data fra siger S3 gennem RDDer, DataFrames, DataSets (kun Java / Scala) og Spark SQL til dit slutdatasæt.

For mig er det meget som når nogen ville sige, at de kender “ Excel ”og så vil du spørge dem, om de kunne skrive en grundlæggende makro fra bunden, og de får det rådyr i forlygterne.

En mulig venture i Spark vil omfatte:

  1. Udbygning af din Hadoop-klynge (noder, hukommelse, EC2-forekomster osv.)
  2. YARN-konfiguration (noder, kerner, forekomster, eksekutører, hukommelsesadministration, drivere, overheadhukommelse, transmission, i hukommelsen og videre diskhåndtering osv.) – en af ​​disse kan hænge / dræbe dine job, og du kommer ikke et skridt videre med selv trivielle belastninger af data, hvis en af ​​disse ikke fungerer, vi ll med dine data.
  3. Spark RDDs Documentation
  4. Spark DataFrames Documentation
  5. Spark SQL Documentation
  6. Uundgåeligt skriver du kode ind # s 3–5, der afslører problemerne med nr. 2.
  7. På dette tidspunkt vil du sandsynligvis debugge mindst Java-kode, og hvis du bruger Python, vil py4J gatewayfejl til datatypeproblemer med Python og streaming af dataobjekter.

Mange mennesker kan skrive funktioner / metoder mod RDDer, DataFrames og Spark SQL på få minutter, og hvis de har nogle erfaringer med Python og SQL – måske endda opsluge RDDer, DataFrames og SQL-dokumentation om et par dage – men når dit Spark-job bliver dræbt for en udsendelse, eksekutor, opgave eller en hukommelsesfejl – betyder det intet. Du tager Spark våddragt på og går dybt ned i bugten på Spark [Java].

Skriv et svar

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