Bewährte Methoden für die Konfiguration des Clusters - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bewährte Methoden für die Konfiguration des Clusters

Verwenden Sie die Richtlinien in diesem Abschnitt zum Festlegen der Instance-Typen, Kaufoptionen und Speicherkapazität, die für jeden Knotentyp in einem EMR-Cluster bereitgestellt wird.

Welchen Instance-Typ sollten Sie verwenden?

Es gibt mehrere Möglichkeiten zum Hinzufügen von Amazon-EC2-Instances zu Ihrem Cluster. Welche Methode Sie wählen sollten, hängt davon ab, ob Sie die Instance-Gruppen-Konfiguration oder die Instance-Flotten-Konfiguration für den Cluster verwenden.

  • Instance-Gruppen

    • Fügen Sie vorhandenen Core- und Task-Instance-Gruppen manuell Instances desselben Typs hinzu.

    • Fügen Sie manuell eine Task-Instance-Gruppe hinzu, die einen anderen Instance-Typ verwenden kann.

    • Richten Sie die automatische Skalierung in Amazon EMR für eine Instance-Gruppe ein und fügen Sie Instances automatisch hinzu und entfernen Sie sie basierend auf dem Wert einer von Ihnen angegebenen CloudWatch Amazon-Metrik. Weitere Informationen finden Sie unter Clusterskalierung verwenden.

  • Instance-Flotten

    • Fügen Sie eine einzelne Task-Instance-Flotte hinzu.

    • Ändern Sie die Zielkapazität für On-Demand- und Spot-Instances für vorhandene Core- und Task-Instance-Flotten. Weitere Informationen finden Sie unter Instance-Flotten konfigurieren.

Eine Möglichkeit zum Planen der Instances Ihres Clusters ist die Ausführung eines Test-Clusters mit einem repräsentativen Beispielsatz von Daten und die Überwachung der Auslastung der Knoten im Cluster. Weitere Informationen finden Sie unter Einen Cluster anzeigen und überwachen. Eine andere Möglichkeit besteht in der Berechnung der Kapazität der Instances, die Sie erwägen, und im Vergleichen dieses Werts mit der Größe Ihrer Daten.

Im Allgemeinen erfordert Primärknoten, der Aufgaben zuweist, keine EC2-Instance mit viel Verarbeitungsleistung. Amazon-EC2-Instances für den Core-Knotentyp, der Aufgaben verarbeitet und Daten in HDFS speichert benötigen sowohl Verarbeitungsleistung als auch Speicherkapazität. Amazon-EC2-Instances für den Aufgabenknotentyp, der keine Daten speichert, brauchen nur Verarbeitungsleistung. Richtlinien zu verfügbaren Amazon-EC2-Instances und deren Konfiguration finden Sie unter Amazon-EC2-Instances konfigurieren.

Die folgenden Richtlinien gelten für die meisten Amazon-EMR-Cluster.

  • Es gibt ein vCPU-Limit für die Gesamtzahl der On-Demand-Amazon-EC2-Instances, die Sie auf einem AWS Konto pro ausführen. AWS-Region Weitere Informationen zum vCPU-Limit und zum Anfordern einer Limiterhöhung für Ihr Konto finden Sie unter On-Demand-Instances im Amazon-EC2-Benutzerhandbuch für Linux-Instances.

  • Der Primärknoten stellt keine großen Datenverarbeitungsanforderungen. Für Cluster mit einer großen Anzahl von Knoten oder für Cluster mit Anwendungen, die speziell auf dem primären Knoten (JupyterHubHue usw.) bereitgestellt werden, ist möglicherweise ein größerer primärer Knoten erforderlich, der zur Verbesserung der Cluster-Leistung beitragen kann. Erwägen Sie beispielsweise, eine m5.xlarge-Instance für kleine Cluster (50 oder weniger Knoten) zu verwenden und für größere Cluster auf einen größeren Instance-Typ umzusteigen.

  • Die benötigte Rechenleistung der Core- und Aufgabenknoten hängt von der Art der Verarbeitung ab, die Ihre Anwendung durchführt. Viele Aufträge können auf Allzweck-Instance-Typen ausgeführt werden, die eine ausgewogene Leistung in Bezug auf CPU, Festplattenspeicher und I/O-Durchsatz bieten. Rechenintensive Cluster profitieren von der Ausführung auf High-CPU-Instances, die proportional über mehr CPU-Leistung verfügen als RAM. Datenbank- und Arbeitsspeicher-Caching-Anwendungen können von der Ausführung auf High-Memory-Instances profitieren. Netzwerkintensive und CPU-intensive Anwendungen wie Analyse-, NLP- und Machine Learning-Tools, können von der Ausführung auf Cluster-Datenverarbeitungs-Instances profitieren, da diese proportional hohe CPU-Ressourcen und eine erhöhten Netzwerkleistung bieten.

  • Wenn einzelne Phasen Ihres Clusters unterschiedliche Kapazitätserfordernisse haben, können Sie mit einer geringen Anzahl von Core-Knoten beginnen und die Anzahl von Aufgabenknoten den wechselnden Anforderungen der Auftragsverlaufskapazität entsprechend erhöhen oder verringern.

  • Die Menge der Daten, die Sie verarbeiten können, hängt von der Kapazität Ihrer Core-Knoten und der Datenmenge als Eingabe, während der Verarbeitung, und als Ausgabe ab. Die Eingabe-, intermediären und Ausgabedatensätze befinden sich während der Verarbeitung alle auf dem Cluster.

Wann sollten Sie Spot Instances verwenden?

Wenn Sie einen Cluster in Amazon EMR starten, können Sie auswählen, ob Sie Primär-, Core- oder Aufgaben-Instances auf Spot Instances starten möchten. Da jeder Typ von Instance-Gruppe eine andere Rolle im Cluster hat, hat das Starten der einzelnen Knotentypen auf Spot-Instances bestimmte Auswirkungen. Sie können eine Instance-Kaufoption nicht ändern, während der Cluster ausgeführt wird. Um On-Demand-Instances in Spot Instances oder umgekehrt zu ändern, müssen Sie im Fall von Primär- und Core-Knoten den Cluster beenden und einen neuen Cluster starten. Im Fall von Aufgabenknoten können Sie eine neue Aufgaben-Instance-Gruppe oder -Flotte starten und die alte entfernen.

Amazon-EMR-Einstellungen, die Aufgabenfehler aufgrund des Beendens von Aufgabenknoten-Spot Instances verhindern

Da Spot Instances häufig zum Ausführen von Aufgabenknoten verwendet werden, verfügt Amazon EMR über Standardfunktionen für die Planung von YARN-Aufträge, sodass laufende Aufträge nicht fehlschlagen, wenn Aufgabenknoten, die auf Spot Instances ausgeführt werden, beendet werden. Amazon EMR ermöglicht dies, indem Anwendungsmasterprozesse nur auf Core-Knoten ausgeführt werden können. Der Anwendungsmasterprozess steuert die Ausführung von Aufträgen und muss während der gesamten Laufzeit des Auftrags aktiv bleiben.

Amazon-EMR-Version 5.19.0 und höher verwendet zu diesem Zweck das integrierte YARN-Knotenbeschriftungsfeature. (Frühere Versionen verwendeten einen Code-Patch). Die Eigenschaften in den Klassifizierungen yarn-site und in der capacity-scheduler-Konfiguration sind standardmäßig so konfiguriert, dass der YARN-Kapazitätsplaner und der Fair-Scheduler die Vorteile von Knotenbezeichnungen nutzen. Amazon EMR kennzeichnet Core-Knoten automatisch mit dem CORE-Label und legt Eigenschaften fest, sodass Anwendungsmaster nur für Knoten mit dem CORE-Label geplant werden. Durch manuelles Ändern verwandter Eigenschaften in den Konfigurationsklassifizierungen von Yarn-Site und Kapazitätsplaner oder direkt in den zugehörigen XML-Dateien könnte diese Feature beeinträchtigt oder verändert werden.

Amazon EMR konfiguriert die folgenden Eigenschaften und Werte standardmäßig. Seien Sie vorsichtig, wenn Sie diese Eigenschaften konfigurieren.

Anmerkung

Beginnend mit der Amazon-EMR-6.x-Release-Reihe ist das Feature YARN-Knotenbeschriftungen standardmäßig deaktiviert. Die Anwendungs-Primär-Prozesse können standardmäßig sowohl auf Core- als auch auf Aufgabenknoten ausgeführt werden. Sie können die Funktion für YARN-Knotenbeschriftungen aktivieren, indem Sie folgende Eigenschaften konfigurieren:

  • yarn.node-labels.enabled: true

  • yarn.node-labels.am.default-node-label-expression: 'CORE'

  • yarn-site (yarn-site.xml) auf allen Knoten

    • yarn.node-labels.enabled: true

    • yarn.node-labels.am.default-node-label-expression: 'CORE'

    • yarn.node-labels.fs-store.root-dir: '/apps/yarn/nodelabels'

    • yarn.node-labels.configuration-type: 'distributed'

  • yarn-site (yarn-site.xml) auf Primär- und Core-Knoten

    • yarn.nodemanager.node-labels.provider: 'config'

    • yarn.nodemanager.node-labels.provider.configured-node-partition: 'CORE'

  • capacity-scheduler (capacity-scheduler.xml) auf allen Knoten

    • yarn.scheduler.capacity.root.accessible-node-labels: '*'

    • yarn.scheduler.capacity.root.accessible-node-labels.CORE.capacity: 100

    • yarn.scheduler.capacity.root.default.accessible-node-labels: '*'

    • yarn.scheduler.capacity.root.default.accessible-node-labels.CORE.capacity: 100

Primärknoten auf einer Spot Instance

Der Primärknoten kontrolliert und steuert den Cluster. Wenn er beendet wird, wird der Cluster beendet. Daher sollten Sie den Primärknoten nur als Spot Instance starten, wenn Sie einen Cluster ausführen, dessen plötzliche Beendigung akzeptabel ist. Dies kann der Fall sein, wenn Sie eine neue Anwendung testen, wenn Sie einen Cluster vorliegen haben, der Daten in regelmäßigen Abständen in einem externen Speicher wie Amazon S3 ablegt oder wenn Sie einen Cluster ausführen, bei dem die Kosten eine wichtigere Rollen spielen als der Abschluss des Clusters.

Wenn Sie die Primär-Instance-Gruppe als Spot Instance starten, wird der Cluster erst gestartet, wenn die Spot-Instance-Anforderung erfüllt ist. Diese Tatsache muss bei der Auswahl des maximalen Spot-Preises berücksichtigt werden.

Sie können einen Spot-Instance-Primärknoten nur beim Starten des Clusters hinzufügen. Primärknoten können einem aktuell ausgeführten Cluster weder hinzugefügt noch daraus entfernt werden.

Normalerweise führen Sie den Primärknoten nur als Spot Instance aus, wenn Sie den gesamten Cluster (alle Instance-Gruppen) als Spot Instances ausführen.

Core-Knoten auf Spot Instances

Core-Knoten verarbeiten Daten und speichern Informationen mit HDFS. Das Beenden einer Core-Instance birgt das Risiko eines Datenverlusts. Aus diesem Grund sollten Sie Core-Knoten auf Spot-Instances nur dann ausführen, wenn ein teilweiser Verlust von HDFS-Daten toleriert werden kann.

Beim Starten des Core-Instance-Gruppe als Spot Instances wartet Amazon EMR vor dem Starten der Instance-Gruppe, bis alle angeforderten Core-Instances bereitgestellt werden können. Mit anderen Worten, wenn Sie sechs Amazon-EC2-Instances anfordern und nur fünf zu oder unter Ihrem maximalen Spot-Preis verfügbar sind, wird die Instance-Gruppe nicht gestartet. Amazon EMR wartet weiterhin, bis alle sechs Amazon-EC2-Instances verfügbar sind oder bis Sie den Cluster beenden. Sie können die Anzahl der Spot-Instances in einer Core-Instance-Gruppe ändern, um einem ausgeführten Cluster Kapazitäten hinzuzufügen. Weitere Informationen zum Arbeiten mit Instance-Gruppen und zur Art, wie Spot-Instances mit Instance-Flotten funktionieren, finden Sie unter Einen Cluster mit Instance-Flotten oder einheitlichen Instance-Gruppen erstellen.

Aufgabenknoten auf Spot Instances

Die Aufgabenknoten verarbeiten Daten, bewahren jedoch keine persistente Daten in HDFS auf. Wenn sie beendet werden da der Spot-Preis über Ihren maximalen Spot-Preis geklettert ist, gehen keine Daten verloren und die Auswirkung auf Ihrem Cluster ist minimal.

Wenn Sie einen oder mehrere Aufgaben-Instance-Gruppen als Spot Instances starten, stellt Amazon EMR so viele Aufgabenknoten wie zu Ihrem maximalen Spot-Preis möglich bereit. Das bedeutet, dass wenn Sie eine Aufgaben-Instance-Gruppe mit sechs Knoten anfordern und nur fünf Spot Instances zu oder unter Ihrem maximalen Spot-Preis verfügbar sind, Amazon EMR die Instance-Gruppe mit fünf Knoten startet und den sechsten nach Möglichkeit später hinzufügt.

Das Starten von Aufgaben-Instance-Gruppen als Spot-Instances stellt eine strategische Möglichkeit dar, die Kapazität Ihres Clusters zu erweitern und gleichzeitig die Kosten zu minimieren. Wenn Sie Ihre Primär- und Kern-Instance-Gruppen als On-Demand-Instances starten, ist ihre Kapazität für die Ausführung des Clusters garantiert. Sie können Ihren Instance-Gruppen nach Bedarf Task-Instances hinzufügen, um ein Spitzenaufkommen an Datenverkehr zu verarbeiten oder die Datenverarbeitung zu beschleunigen.

Sie können Task-Knoten mithilfe der Konsole oder der API hinzufügen oder entfernen. AWS CLI Sie können auch zusätzliche Aufgabengruppen hinzufügen, können aber diese nach dem Erstellen nicht mehr entfernen.

Instance-Konfigurationen für Anwendungsszenarien

Die folgende Tabelle stellt eine kurze Referenz für Knotentyp-Kaufoptionen und -Konfigurationen dar, die für bestimmte Anwendungsszenarien in der Regel geeignet sind. Klicken Sie auf den Link, um weitere Informationen zu den einzelnen Szenariotypen anzuzeigen.

Anwendungsszenario Kaufoption für Primärknoten Kaufoption für Core-Knoten Kaufoption für Aufgabenknoten
Langläufer-Cluster und Data Warehouses On-Demand On-Demand oder Instance-Flottenkombination Spot- oder Instance-Flottenkombination
Kostengesteuerte Workloads Spot-Instances Spot-Instances Spot-Instances
Datenkritische Workloads On-Demand On-Demand Spot- oder Instance-Flottenkombination
Testen von Anwendungen Spot-Instances Spot-Instances Spot-Instances

Es gibt verschiedene Szenarien, in denen Spot Instances für die Ausführung eines Amazon-EMR-Clusters nützlich sind.

Langläufer-Cluster und Data Warehouses

Wenn Sie einen permanenten Amazon-EMR-Cluster, z. B. ein Data Warehouse, ausführen, der vorhersehbare Schwankungen der Rechenkapazität bietet, können Sie die Nachfrage in Spitzenzeiten mit Spot Instances kostengünstiger bewältigen. Sie können Ihre Primär- und Core-Instance-Gruppen als On-Demand starten, um die normale Kapazität zu bewältigen, und die Aufgaben-Instance-Gruppe als Spot Instances für Ihre maximale Workload-Anforderungen starten.

Kostengesteuerte Workloads

Wenn Sie kurzlebige Cluster ausführen, für die niedrige Kosten wichtiger sind als die Zeit bis zum Abschluss des Vorgangs, der Verlust von Teilarbeiten akzeptabel ist, können Sie den gesamten Cluster (Primär-, Core- und Aufgaben-Instance-Gruppen) als Spot Instances ausführen, um von den größten Kosteneinsparungen zu profitieren.

Datenkritische Workloads

Wenn Sie einen Cluster ausführen, für den niedrige Kosten wichtiger sind als die Zeit bis zum Abschluss des Vorgangs, der Verlust von Teilarbeiten jedoch nicht akzeptabel ist, können Sie die Primär- und Core-Instance-Gruppen als On-Demand-Instances starten und durch eine oder mehrere Aufgaben-Instance-Gruppen der Spot Instances ergänzen. Wenn Sie die Primär- und Core-Instance-Gruppen als On-Demand-Instance ausführen, wird sichergestellt, dass Ihre Daten in HDFS persistent sind und dass der Cluster vor einer Beendigung aufgrund der Fluktuation des Spot-Markts geschützt ist. Gleichzeitig profitieren Sie von Kosteneinsparungen, die aus der Ausführung der Aufgaben-Instance-Gruppen als Spot Instances resultieren.

Testen von Anwendungen

Wenn Sie eine neue Anwendung testen, um sie für den Start in einer Produktionsumgebung vorzubereiten, können Sie den gesamten Cluster (Primär-, Core- und Aufgaben-Instance-Gruppen) als Spot Instances ausführen, um die Kosten der Tests zu senken.

Berechnen der erforderlichen HDFS-Kapazität eines Clusters

Die Größe des verfügbaren HDFS-Speicher für Ihren Cluster hängt von den folgenden Faktoren ab:

  • Die Anzahl der Amazon-EC2-Instances, die für Core-Knoten verwendet werden.

  • Die Kapazität des Amazon-EC2-Instance-Speichers für den verwendeten Instance-Typ. Weitere Informationen zu Instance-Speicher-Volumes finden Sie unter Amazon Amazon EC2-Instance-Speicher im Amazon EC2 EC2-Benutzerhandbuch.

  • Anzahl und Größe von Amazon-EBS-Volumes, die Core-Knoten angefügt sind.

  • Ein Replikationsfaktor, der bestimmt, wie jeder Datenblock in HDFS für RAID-Redundanz gespeichert wird. Standardmäßig beträgt der Replikationsfaktor 3 für einen Cluster mit 10 oder mehr Core-Knoten, 2 für einen Cluster mit 4 bis 9 Core-Knoten und 1 für einen Cluster mit maximal 3 Knoten.

Zum Berechnen der Kapazität eines HDFS-Clusters addieren Sie für jeden Core-Knoten die Instance-Speicher-Volume-Kapazität zu der Amazon-EBS-Speicherkapazität (falls verwendet). Multiplizieren Sie das Ergebnis mit der Anzahl der Core-Knoten und dividieren Sie dann die Summe durch den Replikationsfaktor basierend auf der Anzahl der Core-Knoten. Beispiel: Ein Cluster mit 10 Core-Knoten des Typs i2.xlarge, die 800 GB Instance-Speicher ohne angeschlossenen Amazon-EBS-Volumes haben, besitzt insgesamt etwa 2 666 GB für HDFS (10 Knoten x 800 GB ÷ 3 Replikationsfaktor).

Wenn der berechnete HDFS-Kapazitätswert kleiner ist als Ihre Daten, können Sie die HDFS-Speicherkapazität wie folgt erhöhen:

  • Erstellen eines Clusters mit zusätzlichen Amazon-EBS-Volumes oder Hinzufügen von Instance-Gruppen mit angefügten Amazon-EBS-Volumes zu einem vorhandenen Cluster

  • Hinzufügen weiterer Core-Knoten

  • Auswählen eines Amazon-EC2-Instance-Typs mit größerer Speicherkapazität

  • Verwenden der Datenkomprimierung

  • Ändern der Hadoop-Konfigurationseinstellungen zum Verringern des Replikationsfaktors

Verwenden Sie diese Option mit Bedacht, da durch Verringern des Replikationsfaktors die Redundanz der HDFS-Daten sowie die Cluster-Funktion zur Wiederherstellung von verlorenen oder beschädigten HDFS-Blöcken beeinträchtigt wird.