Katsaus kipinävaiheisiin
Suoritusprosessin vaihe on vain taso, jonka läpi jokaisen tehtävän on läpäistävä. Koko kipinätehtävä on jaettu useisiin vaiheisiin datan tehokkaan käsittelyn kannalta. Jokainen tehtävä suoritetaan erillisessä osiossa.
Aina kun käyttäjä lähettää kipinätyöhakemuksen Sparkille, Spark-ohjain hyväksyy sen ja tunnistaa sovelluksessa esiintyvät erityyppiset toiminnot / muutokset. Lisäksi nämä toiminnot järjestetään vuokaaviona, jota kutsutaan DAG: ksi. DAG (Directed Acyclic Graph) luodaan aina, kun toiminta tai muutos kutsutaan RDD: hen, joka puolestaan kutsuu DAGScheduler.
DAG: n merkitys on seuraava:
- Suunta: Kaikki solmut on kytketty toisiinsa muodostaen asyklisen kuvaajan. Tämän järjestys määräytyy RDD: lle kutsuttujen toimien kanssa.
- Asykliset: Solmuja ei ole kytketty syklisiksi silmukoiksi, ts. Jos jokin toiminto tai muunnos tehtiin kerran, sitä ei voida palauttaa alkuperäiseen arvoonsa.
- Kaavio: Koko kuviota, jonka muodostavat yhdessä tiettyyn kuvioon järjestetyt reunat ja kärkipisteet, kutsutaan kuvaajaksi. Huiput eivät ole mitään muuta kuin RDD: t ja reunat ovat RDD: hen kutsuttuja toimia.
DAGScheduler jakaa vaiheet useisiin tehtäviin. DAGScheduler välittää sitten vaiheitiedot klusterinhallinnalle (YARN / Spark standalone), joka laukaisee tehtävien ajoituksen suorittamaan tehtävät. Spark driver muuntaa loogisen suunnitelman fyysiseksi suoritussuunnitelmaksi. Kipinöityöt suoritetaan putkilinjamenetelmällä, jossa kaikki muutostyöt yhdistetään yhdeksi vaiheeksi.
muunnokset
On olemassa 2 tyyppisiä muunnoksia, jotka tapahtuvat:
1. Kapeat muunnokset : Nämä ovat muunnoksia, jotka eivät vaadi sekoittamista. Nämä toimet voidaan suorittaa yhdessä vaiheessa.
Esimerkki: kartta () ja suodatin ()
2. Leveät muutokset : Nämä ovat muunnoksia, jotka vaativat sekoittamista eri osioiden välillä. Siksi se edellyttää eri vaiheiden luomista viestintään eri osioiden välillä.
Esimerkki: ReduceByKey
Otetaan esimerkki tämän toiminnan ymmärtämiseksi paremmin.
Esimerkki: Tässä esimerkissä näemme kuinka yksinkertainen sanamäärä toimii Spark DAGScheduler -sovelluksella.
- val data = sc.textFile (“data.txt”)
Tulos: data: org.apache.spark.rdd.RDD (merkkijono) = data.txt MapPartitionsRDD (46) tekstitiedostossa kello 24
Ensin suoritetaan textFile-toimenpide lukemaan annettu syötetekstitiedosto HDFS-sijainnista.
- data.flatMap (_. split (”“)). map (i => (i, 1)). csökkentByKey (_ + _). kerätä
Tulos: res21: Array ((String, Int)) = Array ()
Seuraavaksi suoritetaan flatMap-operaatio rivien jakamiseksi koko syöttötiedostossa eri sanoiksi. Sitten tehdään karttatoimenpide muodostaakseen (avain, arvo) pareja kuten (sana, 1) jokaiselle sanalle. Ja ReduyByKey-toimintoa kutsutaan kunkin sanan lukumäärän löytämiseksi. Lopuksi kollektiivinen toiminta antaa lopputuloksen keräämällä kaikki tiedot.
Tämän ohjelman aikana Spark luo 2 vaihetta, koska muutos suoritetaan täällä. Samalla kun muunnosoperaatio tehdään, siirtäminen on suoritettava, koska tietoja on siirrettävä kahden tai useamman eri osion välillä. Siksi tälle luodaan vaihe ja sitten toinen yksittäinen vaihe muutostyölle luodaan.
Myös sisäisesti nämä vaiheet jaetaan tehtäviin. Tässä esimerkissä kukin vaihe on jaettu 2 tehtävään, koska olemassa on 2 osiota. Jokainen osio suorittaa yksittäisen tehtävän.
Spark-vaiheiden tyypit
Tässä on kahta tyyppiä kipinävaiheita, jotka on annettu alla
1. ShuffleMapStage
Tämä on pohjimmiltaan välivaihe DAG-suoritusprosessissa. Tämän vaiheen lähtöä käytetään sisääntulona seuraaville vaiheille. Tämän lähtö on karttatulostiedostojen muodossa, joita voidaan myöhemmin käyttää vähentämällä tehtävää. ShuffleMapStage-sovellusta pidetään valmista, kun kaikki sen karttalähdöt ovat käytettävissä. Joskus tulostuspaikat voivat puuttua tapauksissa, joissa osiot ovat joko kadonneet tai niitä ei ole saatavana.
Tämä vaihe voi sisältää monia putkilinjaoperaatioita, kuten kartta () ja suodatin () ennen sekoituksen suorittamista. ShuffleMapStage käyttää sisäisiä rekistereitä outputLocs ja _numAvailaOut Output seuraamaan sekoituskarttojen ulostuloja. Yhtä ShuffleMapStage-sovellusta voidaan käyttää yleisesti useissa töissä.
2. ResultStage
Kuten nimestä itsestään käy ilmi, tämä on Spark-työn viimeinen vaihe, joka suorittaa toiminnan yhdelle tai useammalle RDD-osiolle tuloksen laskemiseksi. ResultStage suorittaa sisäisten rekistereiden ja laskurien alustamisen.
DAGScheduler lähettää puuttuvat tehtävät ResultStage-sovellukselle laskentaa varten. Laskentaa varten se vaatii useita pakollisia parametreja, kuten stageId, stageAttempId, sarjoitetun tehtävän lähetysmuuttuja, osio, ensisijaiset TaskLocations, outputId, jotkut paikalliset ominaisuudet, kyseisen vaiheen TaskMetrics. Jotkut vaadittavat valinnaiset parametrit ovat työn tunnus, sovelluksen tunnus ja sovellusyrityksen tunnus.
Spark-vaiheiden edut
Seuraavassa on Spark Stagesin eri edut:
1. Täyttäjien dynaaminen jakaminen
Näkemällä Spark Job -tapahtuman aikajana näemme, että toimeenpanijoiden allokointi tapahtuu dynaamisesti. Tämä tarkoittaa, että toimeenpanijoita kutsutaan klusterista työmäärän mukaan tehtävän suorittamisen aikana. Sitten se vapautetaan klusteriin heti, kun työ on valmis. Tämä säästää resurssien allokointimuistin ja antaa muiden samassa klusterissa toimivien sovellusten käyttää uudelleen suorittajia. Siksi klusterien yleinen käyttöaste kasvaa ja on optimaalinen.
2. Välimuisti
RDD-muistit tallennetaan välimuistiin operaatioiden aikana, joita niille suoritetaan kussakin vaiheessa, ja tallennetaan muistiin. Tämä on hyödyllistä laskennallisen ajan säästämisessä, kun lopputulos vaatii, että samat RDD: t luetaan uudelleen HDFS: ltä.
3. Rinnakkaissuoritus
Toisistaan riippumattomia kipinöitä suoritetaan rinnakkain, ellei ja kunnes siihen tarvitaan sekoitusta tai yhden vaiheen syöttö riippuu sen aikaisemmasta ulostulosta.
4. DAG-visualisointi
Tämä on erittäin hyödyllistä monimutkaisissa laskennoissa, joissa on kyse paljon operaatioista ja niiden riippuvuuksista. Kun näet tämän DAG-visualisoinnin, voidaan helposti jäljittää virtaus ja tunnistaa suorituskyvyn tukot. Voit myös nähdä kunkin vaiheen suorittamat tehtävät napsauttamalla tässä visualisoinnissa näkyviä vaiheita. Tässä laajennetussa näkymässä esitetään kaikki tähän vaiheeseen kuuluvat RDD: n yksityiskohdat.
5. Vikasietoisuus
RDD: lle suoritetun välimuistion vuoksi DAG: lla on tietue jokaisesta niille suoritetusta toiminnasta. Oletetaan siis, että RDD häviää, se voidaan helposti hakea DAG: n avulla. Ryhmähallintaohjelmalla voidaan tunnistaa osio, josta se katosi, ja sama RDD voidaan sijoittaa uudelleen samaan osioon tietojen menetyksen palauttamiseksi.
Edellä mainittujen etujen takia Apache Spark -laitetta käytetään laajasti aiemmin käytetyn MapReduce-sovelluksen sijasta. Spark-vaiheet ovat vain laajennettu versio MapReducesta. Koska MapReduce vaati tietojen lukemista ja kirjoittamista HDFS: lle useita kertoja, Spark otettiin käyttöön, joka suorittaa nämä toiminnot muistissaan.
johtopäätös
Voimme siis päätellä, että Spark-vaiheet ovat tehokkaampia, koska ne muistiin lasketaan, lisääntynyt käsittelynopeus jopa iteratiivisessa prosessoinnissa.
Suositellut artikkelit
Tämä on opas Spark Stages -tapahtumiin. Tässä keskustellaan muutostyypeistä ja kipinävaiheiden tyypeistä ja eduista. Saatat myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -
- Kuinka asentaa Spark
- Spark streaming
- Ura Sparkissa
- Spark-haastattelukysymykset
- Yleiskatsaus ja 6 suosituinta kipinän komponenttia