Spark Stages - Spoznajte vrste in prednosti iskalnih stopenj

Kazalo:

Anonim

Pregled etap iskric

Stopnja postopka izvršitve ni nič drugega kot raven, skozi katero mora preiti vsaka od nalog. Celotno iskrišče je razdeljeno na več stopenj za učinkovito obdelavo podatkov. Vsaka naloga se izvede v ločeni particiji.

Kadar uporabnik pošlje prošnjo za iskri v Spark, ga gonilnik Spark sprejme in prepozna različne vrste dejanj / preobrazb, ki so prisotne v aplikaciji. Nadalje bodo te operacije urejene v diagramu poteka, imenovanem DAG. DAG (usmerjeni aciklični graf) se ustvari vsakič, ko se v RDD pokliče dejanje ali preobrazba, ki posledično pokliče DAGScheduler.

Pomen DAG je naslednji:

  • Usmerjeno: vsa vozlišča so med seboj povezana in ustvarjajo aciklični graf. Zaporedje tega je določeno z dejanji, ki se zahtevajo v RDD.
  • Aciklično: vozlišča niso povezana kot ciklična zanka, tj. Če je bilo dejanje ali preoblikovanje enkrat izvedeno, ni mogoče vrniti nazaj na prvotno vrednost.
  • Graf: Celoten vzorec, ki ga tvorijo robovi in ​​točki, razporejeni skupaj v določenem vzorcu, se imenuje graf. Vrhovi niso nič drugega kot RDD, robovi pa so dejanja, ki jih imenujemo RDD.

DAGScheduler je tisti, ki razdeli stopnje na več nalog. Nato DAGScheduler posreduje podatke o stopnji upravitelju grozdov (JARN / Spark samostojno), ki sproži planer opravila za izvajanje nalog. Gonilnik iskre pretvori logični načrt v fizični načrt izvedbe. Iskalna opravila se izvajajo po cevovodni metodi, kjer so vse naloge transformacije združene v eno stopnjo.

Transformacije

Izvajata se dve vrsti transformacij:

1. Ozke transformacije : To so transformacije, ki ne zahtevajo procesa premeščanja. Ta dejanja je mogoče izvesti v eni fazi.

Primer: map () in filter ()

2. Široke transformacije : To so transformacije, ki zahtevajo premikanje po različnih particijah. Zato je treba ustvariti različne faze za komunikacijo na različnih particijah.

Primer: ReduceByKey

Vzemimo primer za boljše razumevanje, kako to deluje.

Primer: V tem primeru bomo videli, kako preprosto število besed deluje s pomočjo Spark DAGScheduler.

  • val podatki = sc.textFile ("data.txt")

Rezultat: podatki: org.apache.spark.rdd.RDD (String) = data.txt MapPartitionsRDD (46) pri textFile na: 24

Najprej se izvede besedilna datoteka za branje podane vhodne besedilne datoteke z mesta HDFS.

  • data.flatMap (_. razdeliti ("")). map (i => (i, 1)). zmanjšatiByKey (_ + _). zbirati

Rezultat: res21: Array ((String, Int)) = Array ()

Nato se izvede operacija flatMap, da se vrstice v celotni vhodni datoteki razdelijo na različne besede. Nato se izvede preslikava zemljevida, da se oblikujejo (ključ, vrednost) pari (beseda, 1) za vsako besedo. In funkcija reduByKey je poklicana, da najde vsoto števkov za vsako besedo. Končno bo kolektivna akcija z zbiranjem vseh podatkov dala končni rezultat.

Med tem programom Spark ustvari dve stopnji, ker se tu preoblikuje. Medtem ko se postopek preoblikovanja izvaja, je treba izvesti mešanje, ker je treba podatke premeščati med dvema ali več različnimi particijami. Zato se ustvari oder in nato ustvari še en sam korak za nalogo transformacije.

Tudi notranje stopnje bodo te stopnje razdeljene na naloge. V tem primeru je vsaka stopnja razdeljena na 2 nalogi, saj obstajata 2 particiji. Vsaka particija izvaja posamezno nalogo.

Vrste iskalnih stopenj

Spodaj sta navedeni dve vrsti iskrišč

1. ShuffleMapStage

To je v bistvu vmesna faza v postopku izvedbe DAG. Izhod te faze se uporablja kot vhod za nadaljnje stopnje. Izhod tega je v obliki izhodnih datotek zemljevida, ki jih lahko kasneje uporabimo z zmanjšanjem opravil. ShuffleMapStage velja, da je pripravljen, ko so na voljo vsi njegovi izhodi zemljevida. Včasih lahko izhodne lokacije manjkajo v primerih, ko so particije izgubljene ali pa niso na voljo.

Ta faza lahko vsebuje veliko operacij cevovoda, kot sta map () in filter () pred izvedbo premestitve. Izhodi notranjih registrov ShuffleMapStage uporabljajo notranje registreLocs in _numAvailableOutputs za sledenje števila izhodov preslikave zemljevida. Posamezen ShuffleMapStage se lahko pogosto uporablja pri različnih opravilih.

2. Rezultat rezultata

Kot že samo ime pove, je to zadnja faza opravila Spark, ki izvede operacijo na eni ali več particijah RDD za izračun rezultata. Inicializacija notranjih registrov in števcev opravi ResultStage.

DAGScheduler predloži manjkajoče naloge, če obstajajo, v ResultStage za izračun. Za računanje potrebuje različne obvezne parametre, kot so stageId, stageAttempId, oddajna spremenljivka serijske naloge, particija, prednostne TaskLocations, outputId, nekatere lokalne lastnosti, TaskMetrics za to posebno stopnjo. Nekateri izmed neobveznih potrebnih parametrov so ID opravila, ID aplikacije in poskus poskusov.

Prednosti iskrišč

Spodaj so različne prednosti Spark Stages:

1. Dinamična dodelitev izvršiteljev

Če vidimo časovno premico Spark Job Event, vidimo, da dodeljevanje izvršiteljev poteka dinamično. To pomeni, da se izvajalci pokličejo iz grozda, odvisno od delovne obremenitve med izvajanjem naloge. Nato se takoj po opravljenem delu sprosti nazaj v gručo. S tem prihranite pomnilnik za dodeljevanje virov in drugim aplikacijam, ki se izvajajo na istem grozdu, omogočijo ponovno uporabo izvršiteljev. Tako se bo skupna izkoriščenost grozdov povečala in bila optimalna.

2. Caching

RDD se predpomnijo med operacijami, ki jih izvajajo na vsaki stopnji, in se shranijo v pomnilnik. To je koristno pri varčevanju računalniškega časa, ko končni rezultat zahteva, da se isti HDD znova preberejo iz HDFS.

3. Vzporedna izvedba

Naloge iskri, ki so med seboj neodvisne, se izvajajo vzporedno, razen če je potrebno premeščanje ali če je vnos ene stopnje odvisen od njegovega prejšnjega izhoda.

4. DAG vizualizacija

To je zelo koristno v primerih zapletenih izračunov, v katerih je vključenih veliko operacij in njihovih odvisnosti. Če opazimo to vizualizacijo DAG, je mogoče preprosto izslediti tok in prepoznati zapore delovanja. Prav tako si lahko ogledate vsako nalogo, ki jo izvaja posamezna stopnja, s klikom na stopnje, prikazane v tej vizualizaciji. V tem razširjenem pogledu so prikazane vse podrobnosti RDD-jev, ki pripadajo tej stopnji.

5. Napaka napak

Zaradi operacije predpomnjenja, ki se izvaja na RDD-jih, bo DAG zapisal vsako dejanje, izvedeno na njih. Predpostavimo, da je v vsakem primeru izgubljen RDD, ga je mogoče zlahka pridobiti s pomočjo DAG-a. Upravitelja grozdov lahko uporabite za identifikacijo particije, na kateri je bila izgubljena, isti RDD pa lahko ponovno postavite na isto particijo za obnovitev izgube podatkov.

Zaradi zgoraj omenjenih prednosti se Apache Spark pogosto uporablja namesto prej uporabljenega MapReduce. Spark faze niso nič drugega kot razširjena različica MapReduce. Ker je MapReduce zahteval, da se podatki večkrat preberejo in zapišejo v HDFS, je bila predstavljena Spark, ki te ukrepe shrani v svoj spomin.

Zaključek

Zato lahko sklepamo, da so iskalne stopnje učinkovitejše zaradi izračuna v pomnilniku, večje hitrosti obdelave, tudi za iterativno obdelavo.

Priporočeni članki

To je vodnik po iskalnih odrih. Tukaj razpravljamo o vrstah transformacije ter vrstah in prednostih iskrišč. Za več informacij si lahko ogledate tudi naslednje članke -

  1. Kako namestiti iskrilo
  2. Iskrivo pretakanje
  3. Poklic v Iskri
  4. Spark Intervju Vprašanja
  5. Pregled in top 6 komponent iskre