tämä asiakirja antaa lyhyen yleiskuvan siitä, miten Spark toimii klustereissa, jotta siihen liittyvät komponentit olisi helpompi ymmärtää. Lue hakemusten jättämisen opas, jossa kerrotaan hakemusten käynnistämisestä klusterissa.
Kipinäsovellukset toimivat klusterissa itsenäisinä prosessijoukkoina, joita koordinoi pääohjelmasi SparkContext
olio (jota kutsutaan ajuriohjelmaksi).
erityisesti, jotta SparkContext toimisi klusterissa, se voi kytkeytyä useisiin klusterinhallintatyyppeihin (joko Sparkin omaan erilliseen klusterinhallintaohjelmaan, Mesoihin tai lankaan), jotka jakavat resursseja acrossovelluksiin. Kun yhteys on kytketty, Spark hankkii suorittajia klusterin solmuista, jotka ovat prosesseja, jotka suorittavat laskelmia ja tallentavat tietoja sovellukseesi.Seuraavaksi se lähettää sovelluskoodisi (määritelty JAR-tai Python-tiedostoilla, jotka välitetään Sparkcontextille) toimeenpanijoille. Lopuksi SparkContext lähettää tehtäviä suorittajille suoritettavaksi.
on olemassa useita hyödyllisiä asioita huomata tästä arkkitehtuurista:
- jokainen sovellus saa omat toimeenpanijaprosessinsa, jotka pysyvät ylhäällä koko sovelluksen keston ajan ja suorittavat tehtäviä useissa säikeissä. Tämän etuna on sovellusten eristäminen toisistaan sekä aikataulutuspuolella (jokainen kuljettaja aikatauluttaa omat tehtävänsä) että suorittimen puolella (eri sovellusten tehtävät suoritetaan eri JVMs: ssä). Se tarkoittaa kuitenkin myös, että tietoja ei voida jakaa eri Spark-sovellusten kesken (sparkcontext-instanssit) ilman, että ne kirjoitetaan ulkoiseen tallennusjärjestelmään.
- Spark on agnostikko taustalla olevalle klusterin johtajalle. Niin kauan kuin se voi hankkia executorprocesseja, ja nämä kommunikoivat keskenään, se on suhteellisen helppo suorittaa jopa acluster manager, joka tukee myös muita sovelluksia (esim.Mesos/Lanka).
- ajuriohjelman on kuunneltava ja hyväksyttävä saapuvia yhteyksiä suorittajiltaan läpi koko eliniän (esim.katso spark.ohjain.portti verkon configsection). Näin ollen ajuriohjelman on oltava verkossakäytettävissä työntekijän solmukohdista.
- koska kuljettaja aikatauluttaa tehtäviä klusterissa, se tulisi ajaa lähellä työpisteitä, mieluiten samassa lähiverkossa. Jos haluat lähettää pyyntöjä toimitukseen etänä, on parempi avata RPC kuljettajalle ja saada se lähettämään operaatioita lähistöltä kuin ajaa kuljettaja kauas työntekijöiden solmukohdista.
Klusterijohtajatyypit
järjestelmä tukee tällä hetkellä useita klusterijohtajia:
- Standalone – yksinkertainen klusterinhallinta sisältyy Sparkiin, joka tekee klusterin perustamisesta helppoa.
- Apache Mesos – yleinen klusterijohtaja, jolla voi ajaa myös Hadoop-MapReduce-ja palvelusovelluksia.
- Hadoop Lanka-resurssipäällikkö Hadoop 2: ssa.
- Kubernetes-avoimen lähdekoodin järjestelmä konttisovellusten käyttöönoton, skaalauksen ja hallinnan automatisointiin.
kolmannen osapuolen projekti (jota Spark-projekti ei tue) on olemassa lisätäkseen fornomadin tuen klusterin hallinnoijaksi.
hakemusten jättäminen
Hakemukset voidaan toimittaa minkä tahansa tyyppiseen klusteriin käyttäen spark-submit
– skriptiä.Hakemuksen jättämisen oppaassa kerrotaan, miten tämä tehdään.
seuranta
jokaisella ajuriohjelmalla on web-käyttöliittymä, tyypillisesti portilla 4040, joka näyttää tietoja suoritustehtävistä, suorittajista ja tallennustilan käytöstä. Siirry kohtaan verkkoselaimessa saadaksesi tämän käyttöliittymän käyttöön. Seurantaoppaassa kerrotaan myös muista seurantavaihtoehdoista.
työn aikataulutus
kipinä antaa kontrollin resurssien kohdentamisesta sekä sovellusten välillä (clustermanagerin tasolla) että sovellusten sisällä (jos useita laskelmia tapahtuu samassa Kipinätekstissä).Tätä kuvataan tarkemmin työn aikataulukatsauksessa.
Sanasto
seuraavassa taulukossa on yhteenveto klusterikäsitteisiin viittaavista termeistä:
termi | merkitys |
---|---|
Application | User program built on Spark. Koostuu ajuriohjelmasta ja klusterin toteuttajista. |
Sovelluspurkki | purkki, jossa on käyttäjän kipinä-sovellus. Joissakin tapauksissa käyttäjät haluavat luoda ”uber-purkin”, joka sisältää heidän sovelluksensa riippuvuuksineen. Käyttäjän purkissa ei saa koskaan olla Hadoop-tai Spark-kirjastoja, mutta ne lisätään suorituksen aikana. |
ajuriohjelma | prosessi, joka ajaa sovelluksen pääfunktiota ja luo Sparkcontekstin |
klusterin johtaja | ulkopuolinen palvelu klusterin resurssien hankkimiseksi (esim. itsenäinen johtaja, Mesos, Lanka) |
käyttöönottotila | erottaa missä ajuriprosessi kulkee. ”Cluster” – tilassa kehys käynnistää kuljettajan klusterin sisällä. ”Client” – tilassa lähettäjä käynnistää ajurin klusterin ulkopuolella. |
Työntekijäsolmu | mikä tahansa solmu, joka voi suorittaa ohjelmakoodin klusterissa |
Suorittaja | työsolmussa sovellukselle käynnistetty prosessi, joka suorittaa tehtäviä ja pitää tiedot muistissa tai levymuistissa niiden yli. Jokaisella sovelluksella on omat toteuttajansa. |
tehtävä | työyksikkö, joka lähetetään yhdelle toimeenpanijalle |
tehtävä | useista tehtävistä koostuva Rinnakkaislaskenta, joka saa kipinätoiminnon (esim. save , collect ); tätä termiä käytetään kuskien lokikirjoissa. |
vaihe | jokainen työ jaetaan pienempiin tehtäväsarjoihin, joita kutsutaan vaiheiksi, jotka riippuvat toisistaan (samanlainen kuin kartta ja vähentää vaiheita Mapreducessa); tätä termiä käytetään kuljettajan lokissa. |