Um die Effizienz einer Spark-Anwendung zu verbessern, ist es wichtig, deren Leistung und Verhalten zu überwachen. In diesem Beitrag zeigen wir, wie Sie detaillierte Spark-Metriken veröffentlichen Amazon EMR zu Amazon CloudWatch. Dies gibt Ihnen die Möglichkeit, Engpässe zu erkennen und gleichzeitig die Ressourcennutzung zu optimieren.
CloudWatch bietet eine robuste, skalierbare und kostengünstige Überwachungslösung für AWS-Ressourcen und -Anwendungen mit leistungsstarken Anpassungsoptionen und nahtloser Integration mit anderen AWS-Diensten. Standardmäßig sendet Amazon EMR grundlegende Kennzahlen an CloudWatch, um die Aktivität und den Zustand eines Clusters zu verfolgen. Das konfigurierbare Metriksystem von Spark ermöglicht die Erfassung von Metriken in einer Vielzahl von Senken, einschließlich HTTP-, JMX- und CSV-Dateien. Es ist jedoch eine zusätzliche Konfiguration erforderlich, damit Spark Metriken in CloudWatch veröffentlichen kann.
Lösungsüberblick
Diese Lösung umfasst die Spark-Konfiguration zum Senden von Metriken an eine benutzerdefinierte Senke. Die benutzerdefinierte Senke erfasst nur die in einer Metricfilter.json-Datei definierten Metriken. Es nutzt den CloudWatch-Agenten, um die Metriken in einem benutzerdefinierten Cloudwatch-Namespace zu veröffentlichen. Das enthaltene Bootstrap-Aktionsskript ist für die Installation und Konfiguration des CloudWatch-Agenten und der Metrikbibliothek auf dem verantwortlich Amazon Elastic Compute-Cloud (Amazon EC2) EMR-Instanzen. Ein CloudWatch-Dashboard kann sofortige Einblicke in die Leistung einer Anwendung bieten.
Das folgende Diagramm veranschaulicht die Lösungsarchitektur und den Workflow.
Der Workflow umfasst die folgenden Schritte:
- Benutzer starten einen Spark EMR-Job und erstellen einen Schritt im EMR-Cluster. Mit Apache Spark wird die Arbeitslast auf die verschiedenen Knoten des EMR-Clusters verteilt.
- In jedem Knoten (EC2-Instanz) des Clusters erfasst eine Spark-Bibliothek Metrikdaten und überträgt sie an einen CloudWatch-Agenten, der die Metrikdaten aggregiert, bevor er sie an CloudWatch überträgt jede 30 Sekunden.
- Benutzer können die Metriken beim Zugriff auf den benutzerdefinierten Namespace in der CloudWatch-Konsole anzeigen.
Wir bieten eine AWS CloudFormation Vorlage in diesem Beitrag als allgemeine Anleitung. Die Vorlage zeigt, wie Sie einen CloudWatch-Agenten auf Amazon EMR konfigurieren, um Spark-Metriken an CloudWatch zu übertragen. Sie können es nach Bedarf überprüfen und anpassen, um Ihre Amazon EMR-Sicherheitskonfigurationen einzubeziehen. Als Best Practice empfehlen wir, Ihre Amazon EMR-Sicherheitskonfigurationen in die Vorlage aufzunehmen Daten während der Übertragung verschlüsseln.
Sie sollten sich auch darüber im Klaren sein, dass einige der von diesem Stack bereitgestellten Ressourcen Kosten verursachen, wenn sie weiterhin verwendet werden. Zusätzlich, EMR-Metriken Es fallen keine CloudWatch-Kosten an. Für benutzerdefinierte Metriken fallen jedoch Gebühren an, die auf den Preisen für CloudWatch-Metriken basieren. Weitere Informationen finden Sie unter Amazon CloudWatch-Preise.
In den nächsten Abschnitten gehen wir die folgenden Schritte durch:
- Erstellen Sie die Metrikbibliothek, das Installationsskript und die Filterdefinition und laden Sie sie hoch Amazon Simple Storage-Service (Amazon S3) Eimer.
- Verwenden Sie die CloudFormation-Vorlage, um die folgenden Ressourcen zu erstellen:
- Überwachen Sie die Spark-Metriken auf der CloudWatch-Konsole.
Voraussetzungen:
Dieser Beitrag geht davon aus, dass Sie über Folgendes verfügen:
- An AWS-Konto.
- Ein S3-Bucket zum Speichern des Bootstrap-Skripts, der Bibliothek und der Metrikfilterdefinition.
- Eine VPC erstellt in Amazon Virtual Private Cloud (Amazon VPC), wo Ihr EMR-Cluster gestartet wird.
- Standardmäßige IAM-Servicerollen für Amazon EMR-Berechtigungen für AWS-Services und -Ressourcen. Sie können diese Rollen mit dem Befehl aws emr create-default-roles im erstellen AWS-Befehlszeilenschnittstelle (AWS-CLI).
- Ein optionales EC2-Schlüsselpaar, wenn Sie die Verbindung zu Ihrem Cluster nicht über SSH herstellen möchten Session Manager, eine Fähigkeit von AWS-Systemmanager.
Definieren Sie die erforderlichen Metriken
Um zu vermeiden, dass unnötige Daten an CloudWatch gesendet werden, implementiert unsere Lösung einen Metrikfilter. Überprüfen Sie die Spark-Dokumentation um sich mit den Namespaces und den zugehörigen Metriken vertraut zu machen. Bestimmen Sie, welche Kennzahlen für Ihre spezifischen Anwendungs- und Leistungsziele relevant sind. Je nach Arbeitslast, Datenverarbeitungsanforderungen und Optimierungszielen erfordern verschiedene Anwendungen möglicherweise unterschiedliche Überwachungsmetriken. Die Metriknamen, die Sie überwachen möchten, sollten zusammen mit den zugehörigen Namespaces in der Datei „Metricfilter.json“ definiert werden.
Wir haben eine Beispieldefinition für Metricfilter.json erstellt, die die Erfassung von Metriken im Zusammenhang mit Daten-E/A, Speicherbereinigung, Speicher- und CPU-Auslastung sowie Spark-Job-, Phasen- und Aufgabenmetriken umfasst.
Beachten Sie, dass bestimmte Metriken nicht in allen Spark-Releaseversionen verfügbar sind (appStatus wurde beispielsweise in Spark 3.0 eingeführt).
Erstellen Sie die erforderlichen Dateien und laden Sie sie in einen S3-Bucket hoch
Für weitere Informationen, siehe Hochladen von Objekten und Installieren und Ausführen des CloudWatch-Agenten auf Ihren Servern.
Führen Sie die folgenden Schritte aus, um das Bootstrap-Skript zu erstellen und hochzuladen:
- Wählen Sie auf der Amazon S3-Konsole Ihren S3-Bucket aus.
- Auf dem Objekte Tab, wählen Sie Hochladen.
- Auswählen Hinzufügen von Dateien, dann wähle die Metricfilter.json, installer.sh und examplejob.sh Dateien.
- Laden Sie zusätzlich die hoch
emr-custom-cw-sink-0.0.1.jar
Metrikbibliotheksdatei, die der Amazon EMR-Releaseversion entspricht, die Sie verwenden werden: - Auswählen Hochladen, und notieren Sie sich die S3-URIs für die Dateien.
Stellen Sie Ressourcen mit der CloudFormation-Vorlage bereit
Auswählen Stack starten So starten Sie einen CloudFormation-Stack in Ihrem Konto und stellen die Vorlage bereit:
Diese Vorlage erstellt eine IAM-Rolle, ein IAM-Instanzprofil, einen EMR-Cluster und ein CloudWatch-Dashboard. Der Cluster startet eine Basis Spark-Beispielanwendung. Wenn Sie einen Stack aus dieser Vorlage erstellen, werden Ihnen die verwendeten AWS-Ressourcen in Rechnung gestellt.
Der CloudFormation-Assistent fordert Sie auf, diese Parameter zu ändern oder bereitzustellen:
- Instanztyp - Die Art der Instanz für alle Instanzgruppen. Der Standardwert ist m5.2xlarge.
- InstanzCountCore – Die Anzahl der Instanzen in der Kerninstanzgruppe. Der Standardwert ist 4.
- EMRReaseLabel - Die Amazon EMR-Freigabelabel Sie verwenden möchten. Der Standardwert ist emr-6.9.0.
- BootstrapScriptPath – Der S3-Pfad des Installations-Bootstrap-Skripts installer.sh, das Sie zuvor kopiert haben.
- MetricFilterPath – Der S3-Pfad Ihrer Metricfilter.json-Definition, die Sie zuvor kopiert haben.
- MetricsLibraryPath – Der S3-Pfad Ihrer CloudWatch emr-custom-cw-sink-0.0.1.jar-Bibliothek, die Sie zuvor kopiert haben.
- CloudWatchNamespace – Der Name des benutzerdefinierten CloudWatch-Namespace, der verwendet werden soll.
- SparkDemoApplicationPath – Der S3-Pfad Ihres Beispieljob.sh-Skripts, das Sie zuvor kopiert haben.
- Teilnetz – Das EC2-Subnetz, in dem der Cluster gestartet wird. Sie müssen diesen Parameter angeben.
- EC2KeyPairName – Ein optionales EC2-Schlüsselpaar für die Verbindung zu Clusterknoten als Alternative zum Session Manager.
Sehen Sie sich die Metriken an
Nachdem der CloudFormation-Stack erfolgreich bereitgestellt wurde, startet der Beispieljob automatisch und dauert etwa 15 Minuten. Wählen Sie in der CloudWatch-Konsole Armaturenbretter im Navigationsbereich. Filtern Sie dann die Liste nach dem Präfix SparkMonitoring.
Das Beispiel-Dashboard enthält Informationen zum Cluster und eine Übersicht über die Spark-Jobs, -Stufen und -Aufgaben. Metriken sind auch unter einem benutzerdefinierten Namespace verfügbar, beginnend mit EMRCustomSparkCloudWatchSink
.
Speicher, CPU, E/A und zusätzliche Metriken zur Aufgabenverteilung sind ebenfalls enthalten.
Schließlich stehen pro Executor detaillierte Java-Garbage-Collection-Metriken zur Verfügung.
Aufräumen
Um zukünftige Belastungen Ihres Kontos zu vermeiden, löschen Sie die Ressourcen, die Sie in dieser exemplarischen Vorgehensweise erstellt haben. Für den EMR-Cluster fallen Gebühren an, solange der Cluster aktiv ist. Beenden Sie ihn also, wenn Sie fertig sind. Führen Sie die folgenden Schritte aus:
- Wählen Sie in der CloudFormation-Konsole im Navigationsbereich aus Stacks.
- Wählen Sie den Stack, den Sie gestartet haben (
EMR-CloudWatch-Demo
), dann wähle Löschen. - Leeren Sie den S3-Eimer du hast geschaffen.
- Löschen Sie den S3-Bucket du hast geschaffen.
Zusammenfassung
Nachdem Sie nun die Schritte in dieser exemplarischen Vorgehensweise abgeschlossen haben, wird der CloudWatch-Agent auf Ihren Cluster-Hosts ausgeführt und ist so konfiguriert, dass er Spark-Metriken an CloudWatch überträgt. Mit dieser Funktion können Sie den Zustand und die Leistung Ihrer auf Amazon EMR ausgeführten Spark-Jobs effektiv überwachen, kritische Probleme in Echtzeit erkennen und Grundursachen schnell identifizieren.
Sie können diese Lösung über eine CloudFormation-Vorlage wie diese Beispielvorlage verpacken und bereitstellen, die die IAM-Instanzprofilrolle, das CloudWatch-Dashboard und den EMR-Cluster erstellt. Der Quellcode für die Bibliothek ist verfügbar unter GitHub zur Anpassung.
Um dies weiter voranzutreiben, sollten Sie die Verwendung dieser Metriken in CloudWatch-Alarmen in Betracht ziehen. Sie könnten sie mit anderen Alarmen in einem zusammenfassen zusammengesetzter Alarm oder konfigurieren Sie Alarmaktionen wie das Senden Amazon Simple Notification Service (Amazon SNS) Benachrichtigungen zum Auslösen ereignisgesteuerter Prozesse wie z AWS Lambda Funktionen.
Über den Autor
Le Clue Lubbe ist Principal Engineer bei AWS. Er arbeitet mit unseren größten Unternehmenskunden zusammen, um einige ihrer komplexesten technischen Probleme zu lösen. Er treibt umfassende Lösungen durch Innovation voran, um das Leben unserer Kunden zu beeinflussen und zu verbessern.
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- PlatoData.Network Vertikale generative KI. Motiviere dich selbst. Hier zugreifen.
- PlatoAiStream. Web3-Intelligenz. Wissen verstärkt. Hier zugreifen.
- PlatoESG. Automobil / Elektrofahrzeuge, Kohlenstoff, CleanTech, Energie, Umwelt, Solar, Abfallwirtschaft. Hier zugreifen.
- PlatoHealth. Informationen zu Biotechnologie und klinischen Studien. Hier zugreifen.
- ChartPrime. Verbessern Sie Ihr Handelsspiel mit ChartPrime. Hier zugreifen.
- BlockOffsets. Modernisierung des Eigentums an Umweltkompensationen. Hier zugreifen.
- Quelle: https://aws.amazon.com/blogs/big-data/monitor-apache-spark-applications-on-amazon-emr-with-amazon-cloudwatch/
- :Ist
- :nicht
- :Wo
- 1
- 100
- 107
- 15%
- 20
- 30
- 9
- a
- Fähigkeit
- Zugriff
- Konto
- bekannt
- über
- Action
- Aktionen
- aktiv
- Aktivität
- Zusätzliche
- zusätzlich
- Makler
- Alarm
- Alle
- erlaubt
- entlang
- ebenfalls
- Alternative
- Amazon
- Amazon EC2
- Amazon EMR
- Amazon Web Services
- an
- und
- Apache
- Apache Funken
- Anwendung
- Anwendungen
- ca.
- architektonisch
- Architektur
- SIND
- AS
- damit verbundenen
- übernimmt
- At
- Autor
- Im Prinzip so, wie Sie es von Google Maps kennen.
- verfügbar
- vermeiden
- bewusst
- AWS
- basierend
- basic
- BE
- Bevor
- BESTE
- Bootstrap
- breit
- aber
- by
- CAN
- capability
- Captures
- Capturing
- Ursachen
- sicher
- Gebühren
- Auswählen
- Cluster
- Code
- sammeln
- Sammlung
- sammelt
- abschließen
- Abgeschlossene Verkäufe
- Komplex
- Berechnen
- Konfiguration
- konfiguriert
- Vernetz Dich
- Sich zusammenschliessen
- Geht davon
- Konsul (Console)
- Kernbereich
- entspricht
- kostengünstiger
- Kosten
- könnte
- CPU
- erstellen
- erstellt
- schafft
- Erstellen
- kritischem
- Original
- Kunden
- Anpassung
- anpassen
- Armaturenbrett
- technische Daten
- Datenverarbeitung
- Standard
- definiert
- Definition
- zeigen
- zeigt
- Abhängig
- einsetzen
- Einsatz
- setzt ein
- detailliert
- Bestimmen
- anders
- verteilt
- Verteilung
- erledigt
- Nicht
- Laufwerke
- jeder
- Früher
- effektiv
- Effizienz
- ermöglichen
- Ingenieur
- Unternehmen
- Unternehmenskunden
- essential
- Äther (ETH)
- Beispiel
- Merkmal
- Reichen Sie das
- Mappen
- Filter
- Folgende
- Aussichten für
- für
- Funktionen
- weiter
- Zukunft
- Allgemeines
- bekommen
- ABSICHT
- Go
- Ziele
- Gruppe an
- Gruppen
- Guide
- Haben
- he
- Gesundheit
- Gastgeber
- Ultraschall
- Hilfe
- aber
- HTML
- http
- HTTPS
- IAM
- identifizieren
- Identifizierung
- if
- zeigt
- illustrieren
- Impact der HXNUMXO Observatorien
- implementiert
- zu unterstützen,
- in
- das
- inklusive
- Dazu gehören
- Einschließlich
- Information
- Innovation
- Einblick
- Installation
- Installieren
- Instanz
- sofortig
- Integration
- in
- eingeführt
- Probleme
- IT
- SEINE
- Javac
- Job
- Jobs
- JSON
- Wesentliche
- höchste
- starten
- ins Leben gerufen
- startet
- Bibliothek
- Lebensdauer
- Gefällt mir
- Line
- Liste
- Lang
- Manager
- Kann..
- Memory
- Metrisch
- Metrik
- Minuten
- ändern
- Überwachen
- Überwachung
- mehr
- vor allem warme
- sollen
- Name
- Namen
- Menü
- erforderlich
- weiter
- Knoten
- Fiber Node
- beachten
- Benachrichtigung
- Benachrichtigungen
- Anzahl
- of
- on
- einzige
- Optimierung
- Optimierung
- Optionen
- or
- Andere
- UNSERE
- Überblick
- Paket
- Paar
- Brot
- Parameter
- Parameter
- Weg
- für
- Leistung
- Berechtigungen
- Plan
- Plato
- Datenintelligenz von Plato
- PlatoData
- Porträt
- Post
- größte treibende
- Praxis
- Druck
- gebühr
- Principal
- privat
- Probleme
- anpassen
- Verarbeitung
- Profil
- die
- bietet
- veröffentlichen
- Push
- schiebt
- Schieben
- schnell
- lieber
- echt
- Echtzeit
- empfehlen
- bezogene
- Release
- relevant
- bleiben
- erfordern
- falls angefordert
- Voraussetzungen:
- Ressourcen
- Ressourcennutzung
- Downloads
- für ihren Verlust verantwortlich.
- Überprüfen
- robust
- Rollen
- Rollen
- Wurzel
- Laufen
- skalierbaren
- nahtlos
- Abschnitt
- Abschnitte
- Sicherheitdienst
- sehen
- senden
- Sendung
- sendet
- Lösungen
- Sitzung
- sollte
- Einfacher
- So
- Lösung
- Lösungen
- LÖSEN
- einige
- Quelle
- Quellcode
- Spark
- spezifisch
- Stapel
- Stufe
- Stufen
- Anfang
- Beginnen Sie
- beginnt
- Schritt
- Shritte
- Stoppen
- Lagerung
- Subnetz
- Erfolgreich
- so
- ZUSAMMENFASSUNG
- System
- Systeme und Techniken
- Nehmen
- nimmt
- Aufgabe
- und Aufgaben
- Technische
- Vorlage
- als
- zur Verbesserung der Gesundheitsgerechtigkeit
- Das
- Die Quelle
- ihr
- Sie
- dann
- Diese
- vom Nutzer definierten
- fehlen uns die Worte.
- Durch
- Zeit
- zu
- verfolgen sind
- auslösen
- für
- -
- benutzt
- Verwendung von
- die
- Vielfalt
- Version
- Anzeigen
- Assistent
- Walkthrough
- wollen
- wurde
- we
- Netz
- Web-Services
- wann
- welche
- während
- werden wir
- mit
- Arbeitsablauf.
- Werk
- X
- YAML
- U
- Ihr
- Zephyrnet