Sädemeetappide ülevaade
Täitmisprotsessi etapp pole midagi muud kui tase, mille kaudu kõik ülesanded peavad läbima. Andmete tõhusaks töötlemiseks on kogu sädemetöö jagatud mitmeks etapiks. Iga ülesanne täidetakse eraldi sektsioonis.
Iga kord, kui kasutaja on Spark-töö jaoks sädemetöötaotluse esitanud, aktsepteerib Spark-juht seda ja tuvastab rakenduses esinevad erinevad toimingud / muundumised. Edaspidi korraldatakse need toimingud DAG-nimeliseks vooskeemiks. DAG (Directed Acyclic Graph) luuakse alati, kui RDD-le kutsutakse mõni toiming või teisendus, mis omakorda kutsub DAGScheduleri.
DAG-i tähendus on järgmine:
- Suunatud: kõik sõlmed on üksteisega ühendatud, luues atsüklilise graafiku. Selle järjestuse määravad RDD-le kutsutud toimingud.
- Atsükliline: sõlmed pole ühendatud tsüklilise ahelaga, st kui toiming või teisendus oli kord tehtud, ei saa seda tagasi oma algsesse väärtusesse taastada.
- Graafik: Kogu mustrit, mille moodustavad servad ja tipud, mis on kokku paigutatud konkreetsesse mustrisse, nimetatakse graafiks. Tipud pole muud kui RDD-d ja servad on toimingud, mida RDD-s nimetatakse.
DAGScheduler jagab etapid mitmeks ülesandeks. Seejärel edastab DAGScheduler etappide teabe klastrihaldurile (YARN / Spark standalone), mis käivitab toiminguajasti ülesannete käivitamiseks. Spark draiver teisendab loogilise plaani füüsiliseks täitmisplaaniks. Spark-töid teostatakse torustiku meetodil, kus kõik teisendusülesanded ühendatakse üheks etapiks.
Muundumised
Toimub 2 tüüpi transformatsioone:
1. Kitsad transformatsioonid : Need on transformatsioonid, mis ei vaja segamist. Neid toiminguid saab teostada ühes etapis.
Näide: kaart () ja filter ()
2. Laiad teisendused : Need on teisendused, mis vajavad jaotust erinevate partitsioonide vahel. Seetõttu on vaja eri sektsioonide vaheliseks suhtluseks luua erinevad etapid.
Näide: ReduceByKey
Toome näite, kuidas seda paremini mõista.
Näide: Selles näites näeme, kuidas lihtne sõnade arv Spark DAGScheduleri abil töötab.
- val data = sc.textFile (“data.txt”)
Tulemus: andmed: org.apache.spark.rdd.RDD (String) = data.txt MapPartitionsRDD (46) tekstisFail kell: 24
Esiteks viiakse tekstiFaili toiming etteantud sisendteksti faili lugemiseks HDFS-i asukohast.
- data.flatMap (_. split (”“)). map (i => (i, 1)). csökkentByKey (_ + _). koguda
Tulemus: res21: Massiiv ((string, keskmine)) = Massiiv ()
Järgmisena viiakse läbi flatMap-toiming, et jagada kogu sisendfaili read erinevateks sõnadeks. Seejärel tehakse kaarditoiming, moodustades iga sõna jaoks paar (võtme, väärtuse), näiteks (sõna, 1). Ja redByKey funktsiooni kutsutakse üles leidma iga sõna loenduste summa. Lõpuks annab kollektiivne hagi lõpptulemuse, kogudes kõik andmed.
Selle programmi ajal loob Spark 2 etappi, kuna siin viiakse läbi teisendus. Kui ümberkujundamise toiming on tehtud, tuleb ümberpaigutamine teha, kuna andmeid tuleb segada kahe või enama erineva partitsiooni vahel. Seetõttu luuakse etapp ja seejärel luuakse teistsugune teisenduse üks etapp.
Ka organisatsioonisiseselt jagatakse need etapid ülesanneteks. Selles näites jaguneb iga etapp kaheks ülesandeks, kuna olemas on 2 partitsiooni. Iga sektsioon käivitab individuaalse ülesande.
Sädemeetappide tüübid
Allpool on toodud kaks tüüpi sädemete etappe
1. ShuffleMapStage
Põhimõtteliselt on see DAG-i täitmise protsessi vaheetapp. Selle etapi väljundit kasutatakse sisendina järgmiste etappide jaoks. Selle väljund on kaardiväljundfailide kujul, mida saab hiljem ülesande vähendamisega kasutada. ShuffleMapStage loetakse valmis, kui kõik selle kaardiväljundid on saadaval. Mõnikord võib väljundikohtadest puudu olla, kui vaheseinad on kadunud või puuduvad.
See etapp võib sisaldada paljusid gaasijuhtmete toiminguid, näiteks kaart () ja filter () enne segamist. Sisesed registrid outputLocs ja _numAvailaOut outputid kasutavad ShuffleMapStage shuffle-kaardi väljundite arvu jälgimiseks. Ühte ShuffleMapStage'i saab tavaliselt kasutada erinevates töödes.
2. ResultStage
Nagu nimest enesest järeldada võib, on see Spark-töö viimane etapp, mille käigus tehakse RDD ühe või mitme partitsiooni jaoks operatsioon tulemuse arvutamiseks. Sisemiste registrite ja loendurite lähtestamine toimub ResultStage poolt.
DAGScheduler saadab puuduvad ülesanded arvutamiseks ResultStage'i. Arvutamiseks on vaja mitmesuguseid kohustuslikke parameetreid, näiteks etappId, etappAttempId, jadatava ülesande ülekandemuutuja, partitsioon, eelistatud TaskLocations, outputId, mõned kohalikud omadused, selle konkreetse etapi TaskMetrics. Mõned nõutavad valikulised parameetrid on töö ID, rakenduse ID ja rakenduse katse ID.
Spark-etappide eelised
Allpool on toodud Spark Stages'i erinevad eelised:
1. Täitjate dünaamiline jaotamine
Spark Job Event Timeline'i nähes näeme, et täitjate jaotamine toimub dünaamiliselt. See tähendab, et täitjaid kutsutakse klastrist sõltuvalt töökoormusest ülesande täitmise ajal. Seejärel lastakse see klastrisse tagasi kohe, kui töö on tehtud. See säästab ressursside eraldamise mälu ja võimaldab teistel klastris töötavatel rakendustel täitjaid taaskasutada. Seetõttu suureneb klastri üldine kasutamine ja see on optimaalne.
2. Puhverdamine
RDD-d on vahemälul operatsioonide ajal, mida neile igas etapis tehakse, ja salvestatakse mällu. See on abiks arvutusaja säästmisel, kui lõpptulemus nõuab sama RDD uuesti lugemist HDFS-ist.
3. Paralleelne täitmine
Üksteisest sõltumatuid sädemeid teostatakse paralleelselt, välja arvatud juhul, kui vajatakse segamist või ühe etapi sisend sõltub selle eelmisest väljundist.
4. DAG-i visualiseerimine
See on väga kasulik keerukate arvutuste korral, kui tegemist on palju toimingute ja nende sõltuvustega. Seda DAG-i visualiseerimist nähes saab hõlpsalt voogu jälgida ja toimivustõkkeid tuvastada. Samuti saab näha kõiki etappide käivitatavaid ülesandeid, klõpsates sellel visualiseerimisel näidatud etappidele. Selles laiendatud vaates kuvatakse kõik sellesse etappi kuuluvad RDD üksikasjad.
5. Veatolerants
RDD-dega vahemälutoimingu tõttu on DAG-l rekord nende iga toimingu kohta. Kui oletame, et RDD on igal juhul kadunud, saab selle DAG-i abil hõlpsasti hankida. Klastrihaldurit saab kasutada selle partitsiooni tuvastamiseks, kus see kaotati, ja sama RDD võib uuesti asetada samasse sektsiooni andmete kaotamise taastamiseks.
Ülalnimetatud eeliste tõttu kasutatakse Apache Sparkit varem kasutatud MapReduce'i asemel laialdaselt. Spark-etapid pole muud kui MapReduce'i laiendatud versioon. Kuna MapReduce nõudis andmete HDFS-ist korduvalt lugemist ja sellesse kirjutamist, võeti kasutusele Spark, mis teeb need toimingud oma mälus.
Järeldus
Seega võime järeldada, et Sparki etapid on tõhusamad tänu mälusisesele arvutamisele, suurenenud töötlemiskiirusele isegi iteratiivse töötlemise jaoks.
Soovitatavad artiklid
See on Spark Stages'i juhend. Siin käsitleme transformatsiooni tüüpe ning sädemete etappe ja tüüpe. Võite lisateabe saamiseks vaadata ka järgmisi artikleid -
- Kuidas installida säde
- Sädeme voogesitus
- Karjäär Sparkis
- Spark Intervjuu küsimused
- Ülevaade ja 6 sädeme komponenti