Hoe u de Apache Spark-broncode stap voor stap begrijpt


Beste antwoord

Ik raad u aan om oudere versies van Sparks code te lezen.

Overweeg versie 0.5 uitgebracht in 2012 apache / spark Tegen die tijd had Spark slechts ongeveer 70 broncodebestanden en al deze bestanden waren klein. Bekijk hier de broncode van RDD: apache / spark Alles is zo eenvoudig en beknopt.

Merk ook op dat de architectuur van Spark geen t is sindsdien drastisch veranderd. Ontwikkelaars hebben zojuist veel foutafhandeling, optimalisaties en integratie met externe technologieën zoals Yarn of Kafka toegevoegd.

Als je begrijpt hoe Spark in 2012 werkte, zou het geen probleem zijn om te begrijpen hoe Spark vandaag werkt.

Daarnaast stel ik voor dat u deze opmerkingen leest: JerryLead / SparkInternals . Ze bieden een intern architectuuroverzicht van Spark.

Antwoord

Om terug te gaan op het antwoord van Noam Ben-Ami – ALS je een end-to-end-gebruiker bent, kan Spark behoorlijk uitputtend zijn en moeilijk te leren.

Zelfs als je Bash, Python en SQL kent, is dat slechts het topje van de ijsberg bij het gebruik van Spark. Als je Spark end-to-end gaat versus een Python / SQL-scriptanalist, heeft het veel componenten die op zichzelf grote onderwerpen zijn om te leren.

Natuurlijk kun je Spark lokaal gebruiken (je laptop) en zonder Hadoop, maar in de “echte wereld” zul je Spark niet zo gebruiken. Dit is leuk om een ​​deel van de syntaxis te leren, maar vergis je niet, niemand zal je inhuren om “Spark” in die context te doen (* woordspeling bedoeld).

De hele reden om Spark te gebruiken is prestatie en je zit bovenop een gedistribueerd bestandssysteem dat ook wel Big Data wordt genoemd. Dat betekent dat wanneer u code schrijft voor uw Spark-taken, u dingen begrijpt als partities, knooppunten, serialisering, de JVM, vcores, uitvoerders, geheugen, geheugen en schijf, shuffles, gecomprimeerde bestanden, kolomindelingen (parket) en dergelijke overal in de manier om gegevens te verplaatsen van bijvoorbeeld S3 via RDDs, DataFrames, DataSets (alleen Java / Scala) en Spark SQL naar uw eindgegevensset.

Voor mij lijkt dit veel op wanneer iemand zou zeggen dat ze het weten ” Excel en dan zou je ze vragen of ze een basismacro helemaal zelf konden schrijven en ze dat hert in de koplampen eruit zouden zien.

Een mogelijke onderneming in Spark zou zijn:

  1. Uw Hadoop-cluster uitbouwen (knooppunten, geheugen, EC2-instanties, enz.)
  2. YARN-configuratie (knooppunten, kernen, instanties, uitvoerders, geheugenbeheer, stuurprogrammas, overheadgeheugen, uitzenden, in geheugen en aan schijfbeheer, enz.) – elk van deze kan uw taken vastlopen / doden en u komt geen stap verder met zelfs maar triviale ladingen gegevens als een van deze niet werkt. ll met uw gegevens.
  3. Spark RDDs-documentatie
  4. Spark DataFrames-documentatie
  5. Spark SQL-documentatie
  6. Het is onvermijdelijk dat u code schrijft in # s 3-5 die de problemen van # 2 zullen blootleggen.
  7. Op dit punt zul je waarschijnlijk minimaal Java-code debuggen en, als je Python gebruikt, py4J-gatewayfouten naar problemen met gegevenstypen met Python en streaming data-objecten.

Veel mensen kunnen binnen enkele minuten functies / methoden schrijven tegen RDDs, DataFrames en Spark SQL en als ze enige ervaring hebben met Python en SQL – misschien overspoelt zelfs RDDs, DataFrames en SQL-documentatie in een paar dagen, maar wanneer uw Spark-taak wordt afgebroken vanwege een uitzending, uitvoerder, taak of een geheugenfout, doet dat er allemaal niet toe. Je trekt het Spark-wetsuit aan en duikt diep in de buik van Spark [Java].

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *