Hogyan lehet lépésről lépésre megérteni az Apache szikra forráskódját


A legjobb válasz

Javaslom, hogy olvassa el a Spark kódjának régebbi verzióit.

Fontolja meg az 0.5 verziót megjelent 2012-ben apache / spark Addigra a Sparknak csak körülbelül 70 forráskódfájlja volt, és ezek a fájlok kicsiek voltak. Vessen egy pillantást az RDD forráskódjára itt: apache / spark Minden olyan egyszerű és tömör.

Ne feledje, hogy a Spark architektúrája nem rendelkezik azóta drámai módon megváltozott. A fejlesztők csak rengeteg hibakezelést, optimalizálást és külső technológiákkal való integrációt adtak hozzá, mint például a Yarn vagy a Kafka.

Ha megérted, hogyan működött a Spark 2012-ben, akkor nem lenne probléma megérteni a Spark működését manapság.

Ezenkívül javaslom, hogy olvassa el ezeket a megjegyzéseket: JerryLead / SparkInternals . Belső architektúra áttekintést nyújtanak a Sparkról.

Válasz

Visszatérve Noam Ben-Ami válaszára – HA, ha végpontok közötti felhasználói vagy, a Spark meglehetősen kimerítő lehet. és nehezen megtanulható.

Még akkor is, ha ismeri a Bash-t, a Python-t és az SQL-t, ez csak a Spark használatának jéghegyének a csúcsa. Ha „végponttól végig” megy a Spark vagy egy Python / SQL parancsfájl elemző, akkor sok olyan összetevőt tartalmaz, amelyek önmagukban is nagy témák, amelyeket meg kell tanulniuk.

Biztos, hogy a Sparkot helyben is használhatja (a laptop) és Hadoop nélkül, de a „való világban” nem így fogja használni a Sparkot. Nagyon jó megtanulni a szintaxist, de ne tévedj, senki nem fogja felvenni a „Spark” -ra ebben az összefüggésben (* szójáték célja).

A Spark használatának teljes oka a teljesítmény és a egy elosztott fájlrendszer, más néven „Big Data” tetején ülsz. Ez azt jelenti, hogy amikor a Spark-feladatokhoz kódot ír, akkor a partíciókat, a csomópontokat, a sorosítást, a JVM-et, a vcore-okat, a végrehajtókat, a memóriát, a memóriát és a lemezt, a keveréseket, a tömörített fájlokat, az oszlopos formátumokat (parketta) és hasonlókat érti. az adatok mozgatása mondjuk az S3-ból az RDD-k, DataFrame-ek, DataSet-ek (csak Java / Scala) és a Spark SQL segítségével a végső adatkészletbe.

Számomra ez sok olyan, mint amikor valaki azt mondaná, hogy tudja: Excel ”, majd megkérdezné tőlük, tudnának-e írni egy alap makrót a semmiből, és megkapják azt a szarvast a fényszórók megjelenésében.

A Spark egy lehetséges vállalkozása a következőket foglalja magában:

  1. A Hadoop-fürt kiépítése (csomópontok, memória, EC2 példányok stb.)
  2. YARN config (csomópontok, magok, példányok, végrehajtók, memóriakezelés, illesztőprogramok, felső memória, műsorszórás, a memóriában és tovább) lemezkezelés, stb.) – ezek bármelyike ​​felakaszthatja / megölheti a munkáját, és még triviális adatmennyiséggel sem jut egyetlen lépés tovább, ha ezek bármelyike ​​nem működik, ll az adataival.
  3. Spark RDD dokumentáció
  4. Spark DataFrames dokumentáció
  5. Spark SQL dokumentáció
  6. Óhatatlanul beírja a kódot A # 3–5, amely feltárja a # 2 problémáit.
  7. Ezen a ponton valószínűleg legalább Java kódot hibakeresni fog, Python használata esetén pedig py4J átjáró hibákat adattípus problémákhoz Python-nal és adatfolyam-adatfolyamokkal.

Sokan képesek percek alatt írni funkciókat / módszereket RDD-k, DataFrames és Spark SQL ellen, és ha van valamilyen tapasztalatuk a Pythonról és az SQL-ről – talán sőt néhány nap alatt elnyeli az RDD-ket, a DataFrame-eket és az SQL-dokumentációkat – de amikor a Spark-munkád megölik műsorszórás, végrehajtó, feladat vagy memóriahiba miatt – ezek egyikének sem lesz jelentősége. Felveszed a Spark nedves öltönyt, és mélyen elmerülsz a Spark [Java] hasában.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük