dette dokumentet gir en kort oversikt over Hvordan Spark kjører på klynger, for å gjøre det enklere å forstå komponentene som er involvert. Les gjennom veiledningen for innsending av søknader for å lære om å starte programmer på en klynge.
Spark-programmer kjøres som uavhengige sett med prosesser i en klynge, koordinert av SparkContext
– objektet i hovedprogrammet (kalt driverprogrammet).
Spesielt for å kjøre på en klynge, Kan SparkContext koble til flere typer klyngeledere (Enten Sparks egen frittstående klyngebehandling, Mesos eller YARN), som tildeler ressurser acrossapplications. Når Du er tilkoblet, Kjøper Spark eksekutorer på noder i klyngen, som erprosesser som kjører beregninger og lagrer data for søknaden din.Deretter sender den søknadskoden din (definert AV JAR-eller Python-filer sendt Til SparkContext) tilutøvere. Endelig Sender SparkContext oppgaver til eksekutorer å kjøre.
det er flere nyttige ting å merke seg om denne arkitekturen:
- Hver applikasjon får sine egne eksekutorprosesser, som holder seg oppe i hele tidensøknad og kjør oppgaver i flere tråder. Dette har fordelen av å isolere applikasjonerfra hverandre, både på planleggingssiden (hver driver planlegger sine egne oppgaver) og executorside (oppgaver fra forskjellige applikasjoner kjøres i forskjellige Jvmer). Det betyr imidlertid også at data ikke kan deles på tvers Av Ulike Spark-programmer (forekomster Av SparkContext) uten å skrive det til et eksternt lagringssystem.
- Spark er agnostisk for den underliggende klyngebehandleren. Så lenge det kan skaffe executorprocesses, og disse kommuniserer med hverandre, er det relativt enkelt å kjøre det selv på acluster manager som også støtter andre programmer (F.Eks Mesos/GARN).
- driverprogrammet må lytte etter og godta innkommende tilkoblinger fra sine eksekutorer gjennom hele levetiden (f. eks. se spark.driveren.port i nettverket configsection). Som sådan må driverprogrammet være networkaddressable fra arbeidernodene.
- fordi driveren planlegger oppgaver i klyngen, bør den kjøres nær workernodes, helst på samme lokalnettverk. Hvis du vil sende forespørsler til cluster eksternt, er det bedre å åpne en RPC til sjåføren og få den til å sende operasjoner fra nærliggende enn å kjøre en driver langt borte fra arbeidernodene.
Typer Klyngebehandling
systemet støtter for øyeblikket flere klyngeledere:
- Frittstående-en enkel klyngebehandling som følger Med Spark som gjør det enkelt å sette opp en klynge.
- Apache Mesos-en generell klyngebehandling som også kan kjøre Hadoop MapReduceand tjenesteprogrammer.
- Hadoop GARN-ressursforvalteren I Hadoop 2.
- Kubernetes-et åpen kildekode-system for automatisering av distribusjon,skalering og styring av containeriserte applikasjoner.
det finnes et tredjepartsprosjekt (støttes ikke Av Spark-prosjektet) for å legge til støtte forNomad som klyngebehandling.
Innsending Av Søknader
Søknader kan sendes til en klynge av enhver type ved hjelp av skriptet spark-submit
.Søknaden innlevering guide beskriver hvordan du gjør dette.
Overvåking
hvert driverprogram har et WEBGRENSESNITT, vanligvis på port 4040, som viser informasjon om runningtasks, eksekutorer og lagringsbruk. Bare gå til i en nettleser toaccess DENNE UI. Overvåkingsveiledningen beskriver også andre overvåkingsalternativer.
Jobbplanlegging
Spark gir kontroll over ressursallokering både på tvers av programmer (på nivå med clustermanager) og i programmer (hvis flere beregninger skjer på samme SparkContext).Oversikten over jobbplanlegging beskriver dette mer detaljert.
Ordliste
tabellen nedenfor oppsummerer begreper du vil se brukt til å referere til klyngekonsepter:
Term | Betydning |
---|---|
Søknad | Brukerprogram bygget På Spark. Består av et driverprogram og eksekutorer på klyngen. |
søknad jar | en krukke som inneholder brukerens Gnist søknad. I noen tilfeller vil brukerne ønske å lage en «uber jar» som inneholder søknaden sammen med avhengighetene. Brukerens jar bør aldri inkludere Hadoop eller Spark-biblioteker, men disse vil bli lagt til under kjøring. |
Driver program | prosessen kjører hoved () funksjon av programmet og opprette SparkContext |
Cluster manager | en ekstern tjeneste for å skaffe ressurser på klyngen (f. eks frittstående manager, Mesos, GARN) |
Distribuer-modus | Skiller hvor driverprosessen kjører. I» cluster » – modus starter rammeverket driveren inne i klyngen. I» klient » – modus starter innsenderen driveren utenfor klyngen. |
Arbeidernode | en node som kan kjøre programkode i klyngen |
Eksekutor | en prosess lansert for et program på en arbeidernode, som kjører oppgaver og holder data i minnet eller disklagring over dem. Hver søknad har sine egne eksekutorer. |
Oppgave | en arbeidsenhet som vil bli sendt til en eksekutor |
Jobb | en parallell beregning som består av flere oppgaver som blir gytt som svar På En Gnisthandling (f. eks. save , collect ); du vil se dette begrepet brukt i førerens logger. |
Trinn | hver jobb blir delt inn i mindre sett med oppgaver som kalles stadier som er avhengige av hverandre( ligner på kartet og reduserer stadier I MapReduce); du vil se dette begrepet brukt i førerens logger. |