Spark szakaszok - Ismerje meg a szikraszakaszok típusait és előnyeit

Tartalomjegyzék:

Anonim

A Spark Stages áttekintése

A végrehajtási folyamat egyik szakasza nem más, mint egy szint, amelyen keresztül az egyes feladatoknak át kell menniük. A teljes szikrafeladat több szakaszra oszlik az adatok hatékony feldolgozása érdekében. Minden feladatot külön partícióban hajtanak végre.

Amikor a felhasználó egy Spark-feladat-kérelmet benyújt a Spark-nak, a Spark-illesztőprogram elfogadja azt, és azonosítja az alkalmazásban szereplő különféle műveleteket / átalakításokat. Ezenkívül ezeket a műveleteket a DAG elnevezésű folyamatábra rendezi. DAG (Directed Acyclic Graph) jön létre, amikor egy műveletet vagy átalakítást meghívnak az RDD-n, amely viszont a DAGScheduler-t hívja.

A DAG jelentése a következő:

  • Irányítva: Az összes csomópont össze van kötve aciklusos grafikon létrehozásával. Ennek sorrendjét az RDD-re hívott műveletek határozzák meg.
  • Aciklikus: A csomópontok nem kapcsolódnak ciklikus hurokként, azaz ha egy művelet vagy egy átalakítás egyszer megtörtént, akkor nem lehet visszaállítani az eredeti értékére.
  • Grafikon: Az egész mintát, amelyet az élek és a csúcsok alkotnak egy adott mintában, grafikonnak nevezzük. A csúcsok nem más, mint az RDD-k és az élek az RDD-n hívott műveletek.

A DAGScheduler osztja a szakaszokat számos feladatra. A DAGScheduler ezután továbbítja a színpadinformációkat a fürtkezelőnek (YARN / Spark önálló), amely aktiválja a feladatütemezőt a feladatok futtatásához. A Spark driver a logikai tervet fizikai végrehajtási tervré konvertálja. A szikrafeladatokat a csővezeték módszerrel hajtják végre, ahol az összes átalakítási feladat egyetlen lépésben van összevonva.

transzformációk

Kétféle transzformáció létezik:

1. Keskeny transzformációk : Ezek olyan transzformációk, amelyek nem igényelnek a megkeverés folyamatát. Ezeket a műveleteket egy lépésben lehet végrehajtani.

Példa: térkép () és szűrő ()

2. Széles transzformációk : Ezek olyan transzformációk, amelyek megválasztását különféle partíciók között kell elvégezni. Ezért különféle szakaszokat kell létrehozni a partíciók közötti kommunikációhoz.

Példa: ReduceByKey

Vegyünk egy példát ennek működésének jobb megértésére.

Példa: Ebben a példában meglátjuk, hogyan működik az egyszerű szavak száma a Spark DAGScheduler használatával.

  • val data = sc.textFile (“data.txt”)

Eredmény: adatok: org.apache.spark.rdd.RDD (karakterlánc) = data.txt MapPartitionsRDD (46) a textFilenél: 24

Először egy textFile műveletet hajtanak végre az adott bemeneti szövegfájl olvasásához a HDFS helyről.

  • data.flatMap (_. split (”“)). map (i => (i, 1)). redukcióByKey (_ + _).

Eredmény: res21: Tömb ((karakterlánc, Int)) = Tömb ()

Ezután egy flatMap műveletet hajtunk végre, hogy a teljes bemeneti fájlban a vonalakat különböző szavakra osztjuk. Ezután térképezési műveletet hajtunk végre, hogy (szó, érték) párokat (kulcs, érték) alakítsunk ki minden szóhoz. És az reduByKey függvényt hívjuk meg, hogy megtaláljuk az egyes szavak számának összegét. Végül a kollektív fellépés az összes adat összegyűjtésével adja a végeredményt.

A program során a Spark 2 szakaszt hoz létre, mivel itt történik egy átalakítás. Amíg az átalakítási művelet megtörténik, az átalakítást elvégezni kell, mivel az adatokat 2 vagy több különböző partíció között kell megoszlatni. Ennélfogva létrejön egy szakasz, majd létrejön egy újabb szakasz az átalakítási feladathoz.

Ezeket a szakaszokat belsőleg szintén feladatokra osztják. Ebben a példában minden szakasz 2 feladatra van felosztva, mivel 2 partíció létezik. Minden partíció fut egy egyedi feladatot.

A szikra szakaszai

Az alábbiakban bemutatjuk a szikraszakasz két típusát

1. ShuffleMapStage

Ez alapvetően egy közbenső szakasz a DAG végrehajtásának folyamatában. Ennek a szakasznak a kimenete szolgál a további szakasz (ok) bemeneteként. Ennek kimenete térkép kimeneti fájlok formájában jelenik meg, amelyeket később felhasználhatunk a feladat csökkentésével. A ShuffleMapStage akkor tekinthető készen, ha az összes térképkimenete elérhető. Időnként hiányozhatnak a kimeneti helyek azokban az esetekben, amikor a partíciók elvesznek vagy nem érhetők el.

Ez a szakasz számos csővezeték-műveletet tartalmazhat, mint például a térkép () és a szűrő () az átalakítás végrehajtása előtt. A belső regiszterek outputLocs és _numAvailaOut output elemeit a ShuffleMapStage használja a shuffle térkép kimenetek számának nyomon követésére. Egyetlen ShuffleMapStage különféle feladatokhoz általában használható.

2. ResultStage

Amint maga a neve is sugallja, ez a Spark job utolsó szakaszai, amelyek műveletet hajtanak végre egy RDD egy vagy több partícióján az eredmény kiszámításához. A belső nyilvántartások és számlálók inicializálását a ResultStage végzi.

A DAGScheduler benyújtja a hiányzó feladatokat a ResultStage kiszámításához. A számításhoz különféle kötelező paramétereket igényel, mint például a stageId, stageAttempId, a sorosított feladat sugárzó változója, partíció, az előnyben részesített TaskLocations, outputId, néhány helyi tulajdonság, az adott szakasz TaskMetrics. A választható paraméterek némelyike ​​a Munka azonosító, az Alkalmazás azonosítója és az Alkalmazási kísérlet azonosítója.

A Spark Stage előnyei

Az alábbiakban bemutatjuk a Spark Stages különböző előnyeit:

1. A végrehajtók dinamikus kiosztása

A Spark Job Esemény Idővonalát látva láthatjuk, hogy a végrehajtók kiosztása dinamikusan történik. Ez azt jelenti, hogy a végrehajtókat a feladat végrehajtása során a munkaterheléstől függően a klaszterből hívják fel. Ezután visszakerül a fürtbe, amint elvégzi a munkát. Ez elmenti az erőforrás-elosztási memóriát, és lehetővé teszi az ugyanazon a fürtön futó többi alkalmazás számára a végrehajtók újrafelhasználását. Ezért a klaszter teljes kihasználtsága növekszik és optimális lesz.

2. Gyorsítótár

Az RDD-k gyorsítótárazva vannak az egyes szakaszokon végrehajtott műveletek során, és a memóriában tárolódnak. Ez hasznos a számítási idő megtakarításában, amikor a végeredmény megköveteli, hogy ugyanazokat az RDD-ket ismételten elolvassák a HDFS-től.

3. Párhuzamos végrehajtás

Az egymástól független szikrafeladatokat párhuzamosan hajtják végre, kivéve ha és amíg nincs szükség csoszogásra, vagy az egyik szakasz bemenete az előző kimenettől függ.

4. DAG megjelenítés

Ez nagyon hasznos olyan összetett számítások esetén, amelyekben sok művelet és függőségük van. Látva ezt a DAG-megjelenítést, könnyen nyomon követheti az áramlást és azonosíthatja a teljesítmény-akadályokat. Ezenkívül láthatjuk az egyes szakaszok által futtatott feladatokat, ha rákattintunk a megjelenítésben látható szakaszokra. Ebben a kibővített nézetben az RDD minden részletét bemutatjuk, amelyek ebbe a szakaszba tartoznak.

5. Hibatűrés

Az RDD-ken végrehajtott gyorsítótárazási művelet miatt a DAG nyilvántartást fog készíteni minden rájuk végrehajtott műveletről. Tehát tegyük fel, hogy minden esetben elveszik az RDD, könnyen visszakereshető a DAG segítségével. A fürtkezelő segítségével azonosíthatja azt a partíciót, amelyen elveszett, és ugyanazt az RDD-t újra el lehet helyezni ugyanarra a partícióra az adatvesztés helyreállítása céljából.

A fent említett előnyök miatt az Apache Spark-ot széles körben használják a korábban használt MapReduce helyett. A szikra szakaszai nem más, mint a MapReduce kibővített változata. Mivel a MapReduce-nek az adatok többszöri leolvasására és a HDFS-re történő írására volt szükség, bevezetésre került a Spark, amely ezeket a műveleteket végzi a memóriájában.

Következtetés

Ennélfogva arra a következtetésre juthatunk, hogy a Spark szakaszok hatékonyabbak a memóriában levő számításuk, megnövekedett feldolgozási sebesség miatt, még az iteratív feldolgozáshoz is.

Ajánlott cikkek

Ez egy útmutató a Spark Stages-hez. Itt tárgyaljuk az átalakulás típusait, valamint a szikra szakaszának típusait és előnyeit. Lehet, hogy megnézi a következő cikkeket is, ha többet szeretne megtudni -

  1. A Spark telepítése
  2. Spark streaming
  3. Karrier a Sparkban
  4. Spark Interjú Kérdések
  5. A szikra áttekintése és 6 legfontosabb alkotóeleme