dit document geeft een kort overzicht van hoe Spark op clusters werkt, om het gemakkelijker te maken de betrokken componenten te begrijpen. Lees de handleiding voor het indienen van toepassingen om meer te weten te komen over het starten van toepassingen op een cluster.
Spark-toepassingen worden uitgevoerd als onafhankelijke reeksen processen op een cluster, gecoördineerd door het SparkContext
– object in uw hoofdprogramma (het driver-programma genaamd).
specifiek, om op een cluster te draaien, kan de SparkContext verbinding maken met verschillende typen clustermanagers(ofwel Spark ‘ s eigen standalone Clustermanager, Mesos of YARN), die resources across applicaties toewijzen. Eenmaal aangesloten, Spark verwerft uitvoerders op knooppunten in het cluster, die zijnprocessen die berekeningen uit te voeren en gegevens op te slaan voor uw toepassing.Vervolgens stuurt het je applicatie code (gedefinieerd door JAR of Python bestanden doorgegeven aan SparkContext) naar de uitvoerders. Tot slot stuurt SparkContext taken naar de uitvoerders om uit te voeren.
er zijn verschillende nuttige dingen op te merken over deze architectuur:
- elke toepassing krijgt zijn eigen uitvoerder processen, die blijven voor de duur van de hele toepassing en taken uit te voeren in meerdere threads. Dit heeft het voordeel van het isoleren van applicaties van elkaar, zowel aan de scheduling kant (elk stuurprogramma plant zijn eigen taken) en executorside (taken van verschillende applicaties draaien in verschillende JVM ‘ s). Het betekent echter ook dat gegevens niet kunnen worden gedeeld over verschillende Spark-toepassingen (instanties van SparkContext) zonder het te schrijven naar een extern opslagsysteem.
- Spark is agnostisch voor de onderliggende clusterbeheerder. Zolang het uitvoerprocessen kan verwerven, en deze communiceren met elkaar, is het relatief eenvoudig om het te draaien, zelfs op acluster manager die ook andere toepassingen ondersteunt (bijvoorbeeld Mesos/garen).
- het stuurprogramma moet binnenkomende verbindingen van zijn uitvoerders via de levensduur van zijn programma ‘ s beluisteren en accepteren (zie bijvoorbeeld spark.stuurprogramma.poort in de netwerkconfiguratie). Als zodanig moet het stuurprogramma netwerkaansluitbaar zijn vanuit de werkknooppunten.
- omdat het stuurprogramma taken op het cluster plant, moet het dicht bij de workernodes worden uitgevoerd, bij voorkeur op hetzelfde lokale netwerk. Als u verzoeken op afstand naar de cluster wilt verzenden, is het beter om een RPC te openen voor het stuurprogramma en deze bewerkingen te laten verzenden vanuit de buurt dan om een stuurprogramma te draaien ver weg van de knooppunten van de werknemer.
typen Clusterbeheer
het systeem ondersteunt momenteel verschillende clusterbeheerders:
- Standalone-een eenvoudige Clustermanager met Spark die het gemakkelijk maakt om een cluster op te zetten.
- Apache Mesos-een general cluster manager die ook Hadoop MapReduce en service applicaties kan draaien.
- Hadoop garen – de resource manager in Hadoop 2.
- Kubernetes-een open-source systeem voor het automatiseren van implementatie,schalen en beheer van containerized applicaties.
een project van een derde partij (niet ondersteund door het Spark-project) bestaat om ondersteuning voor forNomad toe te voegen als clusterbeheerder.
aanvragen indienen
aanvragen kunnen worden ingediend bij een cluster van elk type met behulp van het spark-submit
script.De handleiding voor het indienen van aanvragen beschrijft hoe dit te doen.
Monitoring
elk stuurprogramma heeft een web-UI, meestal op poort 4040, die informatie weergeeft over draaitaken, uitvoerders en opslaggebruik. Ga in een webbrowser naar om deze gebruikersinterface te openen. De monitoringgids beschrijft ook andere monitoringopties.
taakplanning
Spark geeft controle over brontoewijzing zowel tussen applicaties (op het niveau van de clustermanager) als binnen applicaties (als er meerdere berekeningen plaatsvinden op dezelfde SparkContext).Het job scheduling overzicht beschrijft dit in meer detail.
Woordenlijst
de volgende tabel geeft een samenvatting van de termen die u zult zien gebruikt om te verwijzen naar clusterconcepten:
Term | Betekenis |
---|---|
toepassing | gebruikersprogramma gebouwd op Spark. Bestaat uit een stuurprogramma en uitvoerders op het cluster. |
jar | een jar met de Spark-applicatie van de gebruiker. In sommige gevallen zullen gebruikers een “uber jar” willen maken met hun applicatie samen met de afhankelijkheden. De jar van de gebruiker mag nooit Hadoop of Spark bibliotheken bevatten, echter, deze zullen tijdens runtime worden toegevoegd. |
Driver program | het proces dat de main() functie van de toepassing uitvoert en de SparkContext aanmaakt |
Clustermanager | een externe service voor het verwerven van resources op het cluster (bijv. standalone manager, Mesos, YARN) |
de implementatiemodus | maakt duidelijk waar het stuurprogrammaproces wordt uitgevoerd. In de modus “cluster” start het framework het stuurprogramma in het cluster. In de modus “client” start de indiener het stuurprogramma buiten het cluster. |
Werkknooppunt | elk knooppunt dat toepassingscode in het cluster kan uitvoeren |
uitvoerder | een proces dat is gestart voor een toepassing op een werkknooppunt, dat taken uitvoert en gegevens in geheugen of schijfopslag bewaart. Elke toepassing heeft zijn eigen uitvoerders. |
taak | een werkeenheid die naar één uitvoerder wordt verzonden |
taak | een parallelle berekening bestaande uit meerdere taken die worden voortgebracht als reactie op een vonk (bv. save , collect ); deze term wordt gebruikt in de logboeken van de bestuurder. |
fase | elke taak wordt opgedeeld in kleinere sets van taken genaamd fasen die van elkaar afhankelijk zijn (vergelijkbaar met de map en verminder fasen in MapReduce); deze term wordt gebruikt in de logboeken van het stuurprogramma. |