Iskričke etape - Saznajte vrste i prednosti iskričavih stupnjeva

Sadržaj:

Anonim

Pregled faza iskre

Faza u izvršnom procesu nije ništa drugo nego nivo kroz koji svaki zadatak mora proći. Cijeli posao iskra podijeljen je u više faza za učinkovitu obradu podataka. Svaki se zadatak izvršava u zasebnoj particiji.

Kad god korisnik podnese zahtjev za iskrivanje na Spark, pogonitelj iskre ga prihvaća i identificira različite vrste radnji / transformacija prisutnih u aplikaciji. Nadalje, ove će se operacije urediti u dijagramu tijeka koji se zove DAG. DAG (usmjereni aciklički grafikon) kreira se kad god se u RDD-u pozove akcija ili transformacija što zauzvrat zove DAGScheduler.

Značenje DAG-a je sljedeće:

  • Usmjereno: Svi čvorovi povezani su međusobno stvarajući aciklički graf. Slijed toga je određen radnjama pozvanim na RDD.
  • Aciklički: Čvorovi nisu povezani kao ciklička petlja, tj. Ako se akcija ili transformacija jednom izvršena ne mogu vratiti natrag u izvornu vrijednost.
  • Grafikon: Čitav uzorak oblikovan rubovima i vrhovima smještenim u određeni uzorak naziva se grafom. Vrhovi nisu ništa drugo do RDD, a rubovi su radnje koje se pozivaju na RDD.

DAGScheduler je onaj koji dijeli faze na niz zadataka. DAGScheduler zatim prosljeđuje podatke o pozornici upravitelju klastera (JARN / Spark samostalni) koji aktivira planer zadataka da izvrši zadatke. Iskreni pogon pretvara logički plan u fizički plan izvršenja. Poslovi iskri izvršavaju se u cjevovodnoj metodi gdje se svi zadaci transformacije kombiniraju u jednu fazu.

transformacije

Postoje dvije vrste transformacija:

1. Uske preobrazbe : To su transformacije koje ne zahtijevaju postupak miješanja. Te se radnje mogu izvesti u jednoj fazi.

Primjer: map () i filter ()

2. Široke transformacije : Ovo su transformacije koje zahtijevaju mijenjanje kroz različite particije. Stoga je potrebno stvoriti različite faze za komunikaciju kroz različite particije.

Primjer: ReduceByKey

Uzmimo primjer za bolje razumijevanje kako to funkcionira.

Primjer: U ovom ćemo primjeru vidjeti kako funkcionira jednostavno brojanje riječi pomoću Spark DAGScheduler.

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

Rezultat: podaci: org.apache.spark.rdd.RDD (string) = data.txt MapPartitionsRDD (46) kod textFile na: 24

Prvo se provodi textFile za čitanje dane ulazne tekstualne datoteke s HDFS lokacije.

  • data.flatMap (_. podijeliti ("")). map (i => (i, 1)). smanjitiByKey (_ + _). prikupiti

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

Zatim se izvodi flatMap operacija da bi se linije u cijeloj ulaznoj datoteci podijelile u različite riječi. Tada se vrši operacija na karti radi formiranja (ključ, vrijednost) parova poput (riječ, 1) za svaku riječ. A funkcija reduByKey poziva se da pronađe zbroj brojeva za svaku riječ. Konačno, kolektivna akcija će dati konačni rezultat prikupljanjem svih podataka.

Tijekom ovog programa Spark stvara dvije faze jer se ovdje provodi transformacija. Dok se obavlja operacija transformacije, potrebno je izvršiti nasumično pretresanje jer se podaci trebaju miješati u dvije ili više različitih particija. Stoga se stvara faza, a zatim stvara još jedna faza za zadatak transformacije.

Također se interno ove faze dijele na zadatke. U ovom su primjeru svaka faza podijeljena na 2 zadatka jer postoje 2 particije koje postoje. Svaka particija ima pojedinačni zadatak.

Vrste iskrica

Ovdje su navedene dvije vrste iskričavih stupnjeva

1. ShuffleMapStage

Ovo je u osnovi posrednička faza u procesu provođenja DAG-a. Izlaz iz ove faze koristi se kao ulaz za daljnje faze. Rezultat toga je u obliku izlaznih datoteka karte koje se kasnije mogu koristiti smanjenjem zadatka. ShuffleMapStage smatra se spremnim kad su dostupni svi njegovi rezultati na karti. Ponekad izlazna mjesta mogu nedostajati u slučajevima kada su particije izgubljene ili nisu dostupne.

Ova faza može sadržavati mnogo operacija cjevovoda, kao što su map () i filter (), prije izvođenja miješanja. ShuffleMapStage koristi interni registar izlazLocs i _numAvailableOutputs za praćenje broja izlaza nasumičnih karata. Jedan ShuffleMapStage može se uobičajeno koristiti u raznim poslovima.

2. Rezultat rezultata

Kao što i samo ime sugerira, ovo je posljednja faza u Spark poslu koji izvodi operaciju na jednoj ili više particija RDD-a radi izračunavanja rezultata. Inicijalizacija internih registara i brojača vrši ResultStage.

DAGScheduler podnosi nedostajuće zadatke ako ih ima na ResultStage za izračunavanje. Za računanje zahtijeva različite obavezne parametre kao što su stageId, stageAttempId, varijabla emitiranja serializiranog zadatka, particija, preferirane zadaćeLocations, outputId, neka lokalna svojstva, TaskMetrics za tu određenu fazu. Neki neobavezni parametri potrebni su ID posla, ID aplikacije i ID pokušaja aplikacije.

Prednosti iskričavih stupnjeva

Ispod su različite prednosti Spark Stages:

1. Dinamična raspodjela izvršitelja

Ako vidimo vremensku traku događaja Spark Job, možemo vidjeti da se dodjela izvršitelja vrši dinamično. To znači da se izvršitelji pozivaju iz klastera, ovisno o radnom opterećenju tijekom izvođenja zadatka. Nakon toga se pušta natrag u klaster čim se obavi svoj posao. Time se štedi memorija za raspodjelu resursa i omogućuje se ostalim aplikacijama koje rade na istom klasteru da ponovo koriste izvršitelje. Stoga će se ukupna iskorištenost klastera povećati i biti optimalna.

2. Caching

RDD-ovi se spremaju tijekom operacija koje se na njima obavljaju na svakoj fazi i pohranjuju u memoriji. Ovo je korisno za uštedu računanja vremena kada krajnji rezultat zahtijeva ponovno čitanje istih RDD-ova s ​​HDFS-a.

3. Paralelno izvršenje

Poslovi iskri koji su neovisni jedan o drugom izvode se paralelno osim ako nije potrebno miješanje ili ako ulaz jedne faze ne ovisi o njegovom prethodnom izlazu.

4. DAG vizualizacija

Ovo je vrlo korisno u slučajevima složenih računanja gdje je uključeno puno operacija i njihovih ovisnosti. Vidjevši ovu DAG vizualizaciju, lako se može pratiti tok i prepoznati blokade performansi. Također se može vidjeti svaki od zadataka koji se izvode po svakoj fazi klikom na faze prikazane u ovoj vizualizaciji. U ovom proširenom prikazu su prikazani svi detalji RDD-a koji pripadaju ovoj fazi.

5. Tolerancija na greške

Zbog operacije predmemoriranja koja se izvodi na RDD-u, DAG će imati zapis o svakoj radnji koja je izvršena na njima. Stoga, pretpostavimo da je u svakom slučaju izgubljen RDD, lako se može preuzeti uz pomoć DAG-a. Upravitelj klastera može se koristiti za identificiranje particije na kojoj je izgubljena i isti RDD može se ponovo postaviti na istu particiju za oporavak gubitka podataka.

Zbog gore navedenih prednosti, Apache Spark se naširoko koristi umjesto ranije korištenog MapReduce. Faze iskre nisu ništa drugo do proširena verzija MapReducea. Budući da je MapReduce zahtijevao da se podaci čitaju i zapisuju u HDFS više puta, uveden je Spark koji ove radnje čini u svojoj memoriji.

Zaključak

Stoga možemo zaključiti da su iskre stupnjevi učinkovitiji zbog izračuna u memoriji, povećane brzine obrade čak i za iterativnu obradu.

Preporučeni članci

Ovo je vodič za Spark Stages. Ovdje ćemo raspravljati o vrstama transformacije i vrstama i prednostima iskričavih stupnjeva. Možete također pogledati sljedeće članke da biste saznali više -

  1. Kako instalirati varnicu
  2. Streaming iskre
  3. Karijera u Sparku
  4. Spark Intervju Pitanja
  5. Pregled i prvih 6 komponenti iskre