Programmierung und Architekturen von ClusterRechnern - Cheatsheet
Knoten und Netzstruktur innerhalb eines Clusters
Definition:
Knoten (Nodes) und deren Netzwerkstruktur bilden die grundlegenden Bausteine eines Clusters zur Erreichung hoher Parallelität und Leistung.
Details:
- Knoten: Einzelne Rechner im Cluster, die gemeinsam die Rechenleistung bereitstellen.
- Netzwerkstruktur: Verbund der Knoten durch Hochgeschwindigkeitsverbindungen.
- Topologien: Häufig verwendete Netzwerk-Topologien sind Bus, Stern, Ring, Mesh und Hypercube.
- Kommunikationsprotokolle: MPI (Message Passing Interface) und OpenMP sind gängige Protokolle zur Kommunikation zwischen den Knoten.
- Switches und Router: Zur effizienten Datenübertragung und zur Minimierung von Latenzen.
- Fehlertoleranz: Mechanismen zur Sicherstellung der Ausfallsicherheit und Datenintegrität.
Gemeinsame parallele Programmiermodelle wie MPI und OpenMP
Definition:
Gemeinsame parallele Programmiermodelle wie MPI und OpenMP
Details:
- MPI (Message Passing Interface): Bibliothek für parallele Programmierung durch Nachrichtenaustausch
- OpenMP (Open Multi-Processing): API für parallele Programmierung auf Shared-Memory-Architekturen
- Kombination: Beide Modelle können zusammen verwendet werden, um Hybridprogramme zu erstellen, die sowohl verteilten Speicher als auch gemeinsam genutzten Speicher nutzen
- Beispiele: Rasches Lösen von rechenintensiven Aufgaben auf Supercomputern und Clustern
- Wichtige Konzepte: Prozesse und Threads, Datenabhängigkeiten und Synchronisation, Lastverteilung und Skalierbarkeit
- Formel: Kosten für Kommunikation und Synchronisierung in Hybridprogrammen
Synchronisation und Kommunikation zwischen Prozessen
Definition:
Koordination und Datenaustausch zwischen Prozessen auf einem Clusterrechner.
Details:
- Verwende Message Passing Interface (MPI) für Kommunikation
- Methode: Punkt-zu-Punkt (Send/Receive) oder Kollektiv (Broadcast, Scatter, Gather, etc.)
- Synchronisation mittels Barrieren (\texttt{MPI\textunderscore Barrier}) und Mutex
- Wichtig: Deadlocks vermeiden
- Kommunikationsmodelle: SPMD (Single Program, Multiple Data) und MPMD (Multiple Program, Multiple Data)
Leistungsüberwachung und -analyse von Clustern
Definition:
Überwachung und Analyse der Performance von Clusterrechnern, um Engpässe zu identifizieren und die Effizienz zu optimieren.
Details:
- Verwendete Metriken: CPU-Auslastung, Speicherverbrauch, Netzwerk-I/O, Platten-I/O.
- Werkzeuge: Ganglia, Nagios, Prometheus.
- Flaschenhalsanalyse: Identifikation und Beseitigung von Performance-Flaschenhälsen.
- Skalierbarkeit: Bewertung, wie gut das System mit steigender Last skaliert.
- Lastverteilung: Überprüfung der gleichmäßigen Verteilung der Workloads auf die Cluster-Nodes.
- Benchmarking: Nutzung standardisierter Benchmarks wie SPEC oder LINPACK.
Grundlegende Prinzipien verteilter Dateisysteme
Definition:
Verteilte Dateisysteme bieten gemeinschaftlichen Zugriff auf Dateien über mehrere Rechner hinweg durch Abstraktion und verteilte Speicherung.
Details:
- Transparenz (Ort, Zugriff, Namensraum)
- Wartung von Konsistenz und Replikation
- Fehlertoleranz
- Sicherheitsmechanismen
- Skalierbarkeit
- Leistungsoptimierungen
- Nutzung von Metadaten
Beispiele und Implementierungen verteilter Dateisysteme (zum Beispiel HDFS)
Definition:
Verteilte Dateisysteme ermöglichen den Zugriff auf Dateien über mehrere Knoten hinweg, wodurch Skalierbarkeit und Fehlertoleranz verbessert werden.
Details:
- HDFS (Hadoop Distributed File System): Entworfen für hohe Durchsatzraten beim Zugriff auf große Datenmengen.
- Daten auf viele Knoten verteilt, jeder Datenblock wird dupliziert, um Ausfallsicherheit zu gewährleisten.
- Ceph: Flexible, für Performance und Skalierbarkeit optimierte Speicherung.
- Verwendet CRUSH-Algorithmus, um Datenplatzierung und -aufnahme zu organisieren.
- GlusterFS: Verbindung mehrerer Speicher über Netzwerk zu einem einzigen großen Dateisystem.
- Skalierbar und einfach zu verwalten, keine Metadatenserver, stattdessen verteilte Hash-Tabelle.
Verwaltungstools und Plattformen (zum Beispiel Kubernetes, Slurm)
Definition:
Verwaltungstools und Plattformen für Clustermanagement und -orchestrierung, insbesondere im Bereich der verteilten Systeme.
Details:
- Kubernetes: Orchestrierungsplattform für Container, ermöglicht Automatisierung der Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen.
- Slurm: Open-Source-Cluster-Management- und Job-Scheduling-System zur Verwaltung großer Compute Clusters und zur Verteilung von Rechenjobs.
- Beide Tools unterstützen bei der effizienten Nutzung von Ressourcen, Lastverteilung und bieten Skalierbarkeit sowie Fehlertoleranz.
- Ziel: Maximierung der Cluster-Ressourcennutzung und Minimierung der Administrationskosten.
Automatisierung und Orchestrierung von Workloads
Definition:
Automatisierung und Orchestrierung von Workloads erlauben die effektive Verwaltung und Ausführung von Tasks in ClusterRechnern.
Details:
- Automatisierung: Skriptgesteuerte Ausführung von Aufgaben ohne menschliches Eingreifen.
- Orchestrierung: Verwaltung und Koordination von automatisierten Aufgaben und Services.
- Werkzeuge: Kubernetes, Docker Swarm, Ansible.
- Ziele: Effizienz, Skalierbarkeit, Fehlerminimierung.
- Beispiel: Kubernetes orchestriert Container, skaliert automatisch und verwaltet deren Lifecycle.
- Wichtige Konzepte: Nodes, Pods, Services, Deployments.
- Relevante Kommandozeilen-Tools: kubectl, helm.