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.
Amazon EMR on EC2 — Verbesserte Überwachung mit CloudWatch benutzerdefinierten Metriken und Protokollen
Übersicht
Amazon EMR bietet leistungsstarke, kostengünstige Funktionen zur Verarbeitung großer Datenmengen. Um Leistung und Ressourcennutzung zu maximieren, ist eine effektive Überwachung unerlässlich. Amazon CloudWatch bietet umfassende Beobachtbarkeit für EMR-Cluster, sodass Sie Metriken und Protokolle in Echtzeit verfolgen können. In diesem Dokument wird beschrieben, wie Sie:
-
Konfigurieren Sie den CloudWatch Agenten zum Senden von EC2 EMR-On-Protokollen an CloudWatch
-
Fügen Sie mithilfe von Klassifizierungen benutzerdefinierte Hadoop-, YARN- und HBase Metriken hinzu
-
Überwachen Sie Metriken über integrierte Dashboards
-
Verfolgen Sie Cluster-Logs über CloudWatch Protokollgruppen
Voraussetzungen und Hintergrund
Standardmäßig sendet Amazon EMR ohne zusätzliche Kosten CloudWatch alle fünf Minuten grundlegende Metriken. Mit EMR Version 7.0+ können Sie den CloudWatch Agenten einsetzen für:
-
Erfassen Sie 34 zusätzliche detaillierte Messwerte in Intervallen von einer Minute (es fallen zusätzliche Gebühren an)
-
Sammeln Sie Metriken von allen Clusterknoten
-
Aggregieren Sie Daten auf dem primären Knoten, bevor Sie sie an senden CloudWatch
-
Greifen Sie über die Registerkarte Monitoring oder die Konsole der EMR-Konsole auf Metriken zu CloudWatch
EMR 7.1 erweitert diese Funktionen, sodass Sie den Agenten so konfigurieren können, dass er spezielle Metriken aus Hadoop, YARN und HBase Komponenten erfasst. Für Umgebungen, in denen Prometheus verwendet wird, können Metriken an Amazon Managed Service for Prometheus weitergeleitet werden.
CloudWatch Agentenkonfiguration für Protokolle
Um EMR-Logs zu erfassen CloudWatch, erstellen Sie eine cloudwatch-config.json-Datei, die definiert, welche Protokolldateien gesammelt werden sollen:
cloudwatch-config.json
{ "agent": {"metrics_collection_interval":60,"logfile":"/var/log/emr-cluster-metrics/amazon-cloudwatch-agent/amazon-cloudwatch-agent.log","run_as_user":"****","omit_hostname":true}, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/mnt/var/log/hadoop-yarn/hadoop-yarn-resourcemanager-*", "log_group_name": "/emr/yarn/resourcemnger", "log_stream_name": "{instance_id}", "publish_multi_logs" : true }, { "file_path": "/var/log/hadoop-hdfs/hadoop-hdfs-namenode-*", "log_group_name": "/emr/hdfs/namenode", "log_stream_name": "{instance_id}", "publish_multi_logs" : true } ] } } } }
Bootstrap-Skript für die Agentenkonfiguration CloudWatch
Um Ihre benutzerdefinierte CloudWatch Konfiguration auf EMR-Knoten anzuwenden, erstellen Sie ein Bootstrap-Skript, das den CloudWatch Agenten mit Ihren Einstellungen neu startet. Dieses Skript stellt sicher, dass der Agent nach der Cluster-Bereitstellung mit Ihren spezifischen Protokollerfassungsparametern ausgeführt wird.
Das Bootstrap-Skript erstellen
Erstellen Sie eine Datei namens cloudwatch-agent-bootstrap.sh mit dem folgenden Inhalt:
#!/bin/bash set -xe EMR_SECONDARY_BA_SCRIPT=$(cat << 'EOF' while true; do NODEPROVISIONSTATE=$(sed -n '/localInstance [{]/,/[}]/ {/nodeProvisionCheckinRecord [{]/,/[}]/ {/status:/ p}}' /emr/instance-controller/lib/info/job-flow-state.txt | awk '{ print $2 }') if [ "$NODEPROVISIONSTATE" == "SUCCESSFUL" ]; then sleep 10 echo "Running my post provision bootstrap" NODETYPE=$(cat /mnt/var/lib/instance-controller/extraInstanceData.json | jq -r '.instanceRole' | awk '{print tolower($0)}') # Copy config file on the instance sudo aws s3 cp s3://
amzn-s3-demo-bucket1
>/cloudwatch-config.json /etc/emr-cluster-metrics/amazon-cloudwatch-agent/conf/emr-amazon-cloudwatch-agent.json # Stop the current agent sudo /usr/bin/amazon-cloudwatch-agent-ctl -a stop # Start the agent with the created config file sudo /usr/bin/amazon-cloudwatch-agent-ctl -a fetch-config -s -m ec2 -c file:/etc/emr-cluster-metrics/amazon-cloudwatch-agent/conf/emr-amazon-cloudwatch-agent.json # Status CW Agent echo "Status CW Agent" sudo /usr/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status exit fi sleep 10 done EOF ) echo "${EMR_SECONDARY_BA_SCRIPT}" | tee -a /tmp/emr-secondary-ba.sh chmod u+x /tmp/emr-secondary-ba.sh /tmp/emr-secondary-ba.sh > /tmp/emr-secondary-ba.log 2>&1 & exit 0
Wichtiger Hinweis zur Konfiguration
Wichtig
Bevor Sie das Skript hochladen, <amzn-s3-demo-bucket1>
ersetzen Sie es durch den tatsächlichen Namen Ihres S3-Buckets, in dem Sie die Datei cloudwatch-config.json aus dem vorherigen Schritt gespeichert haben. Dadurch wird sichergestellt, dass das Bootstrap-Skript Ihre Konfigurationsdatei während der Cluster-Initialisierung abrufen kann.
Dieses Bootstrap-Skript wird:
-
Warten Sie, bis die Knotenbereitstellung abgeschlossen ist
-
Laden Sie Ihre benutzerdefinierte Konfiguration CloudWatch herunter
-
Stoppen Sie jeden laufenden CloudWatch Agenten
-
Starten Sie den Agenten mit Ihrer spezifischen Konfiguration neu
-
Protokollieren Sie den Status des Agenten zur Fehlerbehebung
Benutzerdefinierte metrische Klassifizierungen für Hadoop, YARN und HBase
Zusätzlich zu den CloudWatch Standardmetriken können Sie Ihre Überwachungsfunktionen verbessern, indem Sie benutzerdefinierte anwendungsspezifische Metriken für Ihre EMR-Clusterkomponenten konfigurieren. Die Konfigurations-API von Amazon EMR bietet eine flexible Möglichkeit, genau zu definieren, welche Metriken Sie sammeln möchten.
Konfiguration benutzerdefinierter Metriken
Sie können die Erfassung benutzerdefinierter Metriken auf zwei Arten implementieren:
-
Während der Clustererstellung für neue Cluster
-
Als Rekonfiguration für bestehende Cluster über die EMR-Konsole
Eine Klassifizierungsdatei erstellen
Die Klassifizierungsdatei definiert, welche spezifischen Komponentenmetriken aus Ihrem Cluster gesammelt werden sollen. Im Folgenden finden Sie eine Beispielstruktur für die Erfassung benutzerdefinierter Hadoop-Metriken:
[ { "Classification": "emr-metrics", "Configurations": [ { "Classification": "emr-hadoop-hdfs-datanode-metrics", "Properties": { "Hadoop:service=DataNode,name=DataNodeActivity-*": "DatanodeNetworkErrors,TotalReadTime,TotalWriteTime,BytesRead,BytesWritten,RemoteBytesRead,RemoteBytesWritten,ReadBlockOpNumOps,ReadBlockOpAvgTime,WriteBlockOpNumOps,WriteBlockOpAvgTime", "otel.metric.export.interval": "30000" } }, { "Classification": "emr-hadoop-yarn-nodemanager-metrics", "Properties": { "Hadoop:service=NodeManager,name=JvmMetrics": "MemNonHeapUsedM,MemNonHeapCommittedM,MemNonHeapMaxM,MemHeapUsedM,MemHeapCommittedM,MemHeapMaxM,MemMaxM", "Hadoop:service=NodeManager,name=NodeManagerMetrics": "ContainerCpuUtilization,NodeCpuUtilization,ContainersCompleted,ContainersFailed,ContainersKilled,ContainersLaunched,ContainersRolledBackOnFailure,ContainersRunning,ContainerUsedMemGB,ContainerUsedVMemGB,ContainerLaunchDurationNumOps,ContainerLaunchDurationAvgTime", "otel.metric.export.interval": "20000" } } ], "Properties": {} } ]
Implementierungsschritte
-
Erstellen Sie eine JSON-Datei mit den gewünschten metrischen Klassifizierungen.
-
Passen Sie die Metriken an Ihre Überwachungsanforderungen an.
-
Speichern Sie die Datei und laden Sie sie in Ihren S3-Bucket hoch.
-
Verweisen Sie auf diese Datei, wenn Sie einen neuen Cluster erstellen oder einen vorhandenen neu konfigurieren.
Bewährte Methoden
-
Erfassen Sie nur Metriken, die aussagekräftige Erkenntnisse für Ihre Workloads liefern.
-
Berücksichtigen Sie das Intervall für die Erfassung von Metriken auf der Grundlage Ihrer Überwachungsanforderungen.
-
Die vollständige Liste der verfügbaren Metriken für jede Komponente finden Sie in der AWS Dokumentation.
-
Gruppieren Sie verwandte Metriken innerhalb derselben Klassifizierung, um eine bessere Organisation zu erreichen.
Dieser Ansatz ermöglicht es Ihnen, Ihre Überwachung auf die kritischsten Metriken für Ihre spezifischen EMR-Anwendungen zu konzentrieren und so einen tieferen Einblick in die Cluster-Leistung zu erhalten.
Bereitstellung eines EMR-Clusters mit Integration CloudWatch
Gehen Sie wie folgt vor, um einen Amazon EMR-Cluster zu erstellen, der automatisch Protokolle und benutzerdefinierte Metriken sendet an: CloudWatch
Schritt 1: Aktivieren Sie den Agenten CloudWatch
Gehen Sie beim Erstellen Ihres EMR-Clusters über die AWS Management Console wie folgt vor:
-
Navigieren Sie während der Clustererstellung zum Abschnitt Anwendungen.
-
Wählen Sie die Kontrollkästchen für Ihre primären Anwendungen (Hadoop, Spark usw.) aus.
-
Scrollen Sie, um die Option Amazon CloudWatch Agent zu finden und auszuwählen.
-
Dadurch wird der Agent in Ihrem Cluster aktiviert, was für die Erfassung erweiterter Metriken und Protokolle unerlässlich ist.
Der CloudWatch Agent wird auf allen Knoten in Ihrem Cluster installiert, sodass er System- und Anwendungsmetriken in den konfigurierten Intervallen sammeln kann.
Name und Anwendungen

Einen Cluster erstellen und die verfügbaren Bundles anzeigen.
Anmerkung
Der CloudWatch Agent ist in EMR Version 7.0 und höher verfügbar. Die Aktivierung dieser Komponente ist für die Erfassung und Weiterleitung von benutzerdefinierten Messwerten und die in diesem Handbuch beschriebene Protokollweiterleitung erforderlich.
Schritt 2: Fügen Sie die Bootstrap-Aktion für die Protokollerfassung hinzu
So konfigurieren Sie den CloudWatch Agenten so, dass er bestimmte Protokolldateien sammelt und weiterleitet an CloudWatch:
-
Navigieren Sie im Assistenten zum Erstellen von EMR-Clustern zum Abschnitt Bootstrap-Aktionen
-
Klicken Sie auf Bootstrap-Aktion hinzufügen
-
Wählen Sie im Drop-down-Menü die Option Benutzerdefinierte Aktion aus
-
Geben Sie einen Namen für Ihre Bootstrap-Aktion ein (z. B. Configure CloudWatch Agent)
-
Geben Sie im Feld Skriptspeicherort den S3-Pfad zu Ihrem cloudwatch-agent-bootstrap .sh-Skript ein (z. B. s3://your-bucket-name/cloudwatch-agent-bootstrap.sh)
-
Klicken Sie auf Hinzufügen, um die Bootstrap-Aktion zu speichern
Diese Bootstrap-Aktion wird beim Start des Clusters ausgeführt. Dabei wird sichergestellt, dass der ordnungsgemäß mit Ihren benutzerdefinierten Einstellungen konfiguriert CloudWatchagent ist, um die in Ihrer Konfigurationsdatei angegebenen Protokolldateien zu sammeln und weiterzuleiten.
Der Agent beginnt automatisch mit der Erfassung von Protokollen, sobald die Knoten bereitgestellt sind, sodass Sie mithilfe CloudWatch von Protokollen nahezu in Echtzeit Einblick in Ihre Clustervorgänge erhalten.
Bootstrap-Aktionen

Verwendung von Bootstrap-Aktionen.
Schritt 3: Konfigurieren Sie die Erfassung benutzerdefinierter Metriken
So aktivieren Sie die Erfassung von benutzerdefinierten Hadoop-, YARN- oder HBase Metriken, die über den Standardsatz hinausgehen:
-
Navigieren Sie im Assistenten zum Erstellen von EMR-Clustern zum Abschnitt Konfigurationen.
-
Klicken Sie auf die Schaltfläche Konfigurationen bearbeiten, um die Konfigurationsoptionen zu erweitern.
-
Wählen Sie in der Dropdownliste für die Konfigurationsmethode die Option JSON aus Amazon S3 laden aus.
-
Geben Sie den S3-URI-Pfad zu Ihrer Klassifizierungsdatei für benutzerdefinierte Metriken ein (z. B. s3://amzn-s3-demo-bucket1/ emr-metrics-classification .json).
-
Klicken Sie auf Laden, um die Konfiguration zu analysieren.
-
Stellen Sie sicher, dass die Konfiguration in der Konsolenoberfläche korrekt angezeigt wird.
-
Klicken Sie auf Änderungen speichern, um diese Metrikkonfigurationen auf Ihren Cluster anzuwenden.
In diesem Schritt wird der CloudWatch Agent angewiesen, die spezifischen Komponentenmetriken zu sammeln, die in Ihrer Klassifizierungsdatei definiert sind. Die Metriken werden in den in Ihrer Konfiguration angegebenen Intervallen erfasst und veröffentlicht CloudWatch, wo sie visualisiert und analysiert werden können.
Benutzerdefinierte Metriken bieten tiefere Einblicke in die Leistungsmerkmale Ihres Clusters und ermöglichen so eine genauere Überwachung und Fehlerbehebung Ihrer EMR-Anwendungen.
Softwareeinstellungen

Überschreiben Sie die Standardkonfigurationen.
Aktualisierung der Metrikkonfiguration für laufende Cluster
Sie können die Einstellungen für die Erfassung von Metriken für einen vorhandenen EMR-Cluster ändern, ohne den Betrieb zu unterbrechen, indem Sie die folgenden Schritte ausführen:
-
Navigieren Sie in der AWS Management Console zu Ihrem aktiven EMR-Cluster.
-
Wählen Sie in der Cluster-Detailansicht die Registerkarte Konfigurationen aus.
-
Suchen Sie den Abschnitt Instanzgruppenkonfigurationen.
-
Klicken Sie auf die Schaltfläche „Neu konfigurieren“, um die Einstellungen zu ändern.
-
Wählen Sie „JSON aus Amazon S3 laden“ oder bearbeiten Sie die Konfiguration direkt.
-
Geben Sie den Speicherort Ihrer aktualisierten Metrik-Klassifizierungsdatei ein oder nehmen Sie Änderungen im Editor vor.
-
Wenden Sie die Änderungen an, um das Verhalten bei der Erfassung von Metriken zu aktualisieren.
Diese Rekonfigurationsfunktion ermöglicht es Ihnen, Ihren Überwachungsansatz an die sich ändernden Workload-Anforderungen anzupassen. Der CloudWatch Agent passt sich automatisch an die neue Konfiguration an und erfasst die aktualisierten Messwerte, ohne dass Cluster-Neustarts oder Ausfallzeiten erforderlich sind.
Wichtig
Es kann mehrere Minuten dauern, bis Konfigurationsänderungen auf alle Knoten im Cluster übertragen werden. Überwachen Sie Ihre CloudWatch Dashboards weiterhin, um sicherzustellen, dass die neuen Metriken erwartungsgemäß angezeigt werden.
Cluster-Konfigurationen

Konfigurationen von Instanzgruppen.
Ihre CloudWatch Integration wird validiert
Nach Abschluss der Konfigurationsschritte ist es an der Zeit, zu überprüfen, ob Ihr Monitoring-Setup ordnungsgemäß funktioniert:
Schritt 1: Bereitstellen Ihres EMR-Clusters
-
Überprüfen Sie alle Konfigurationseinstellungen auf Richtigkeit.
-
Stellen Sie sicher, dass Bootstrap-Aktionen und Klassifizierungsdateien korrekt referenziert werden.
-
Klicken Sie auf Cluster erstellen, um Ihre EMR-Umgebung zu starten.
-
Warten Sie, bis der Cluster den Status Running erreicht hat (normalerweise 5—15 Minuten).
Schritt 2: Testanwendungen ausführen
Reichen Sie mehrere Spark-Testanwendungen ein, um aussagekräftige Metriken zu generieren:
-
Führen Sie einen einfachen Spark-Job aus, der Beispieldaten verarbeitet.
-
Führen Sie eine länger andauernde Analyseaufgabe aus, um die Ressourcennutzung zu beobachten.
-
Testen Sie verschiedene Anwendungskonfigurationen, um Leistungskennzahlen zu vergleichen.
Nachdem Ihre Anwendungen abgeschlossen sind (oder während sie ausgeführt werden):
-
Navigieren Sie zur CloudWatch Konsole.
-
Suchen Sie in Ihren konfigurierten Protokollgruppen nach Anwendungsprotokollen.
-
Untersuchen Sie die Metrik-Dashboards, um CPU-, Speicher- und anwendungsspezifische Metriken zu beobachten.
-
Vergewissern Sie sich, dass die in Ihrer Klassifizierungsdatei definierten benutzerdefinierten Metriken in angezeigt werden. CloudWatch
Dieser Validierungsprozess bestätigt, dass Ihre CloudWatch Integration sowohl Protokolle als auch Metriken ordnungsgemäß erfasst, sodass Sie einen umfassenden Einblick in die Leistung und das Anwendungsverhalten Ihres EMR-Clusters erhalten.
Zugreifen auf EMR-Protokolle in CloudWatch Protokollgruppen
Nachdem Ihr EMR-Cluster ausgeführt und der CloudWatch Agent ordnungsgemäß konfiguriert wurde, sind Ihre Anwendungs- und CloudWatch Systemprotokolle in Logs verfügbar. Gehen Sie wie folgt vor, um auf sie zuzugreifen und sie zu analysieren:
Ihre Protokollgruppen anzeigen
-
Navigieren Sie in der AWS Management CloudWatch Console zur Konsole.
-
Wählen Sie im linken Navigationsbereich Protokollgruppen aus.
-
Suchen Sie nach den Protokollgruppen, die durch Ihre Konfiguration erstellt wurden, z. B.:
-
/emr/yarn/resourcemngernach ResourceManager YARN-Protokollen.
-
/emr/hdfs/namenodefür NameNode HDFS-Protokolle.
-
Alle zusätzlichen Protokollgruppen, die in Ihrer Konfigurationsdatei angegeben sind.
-
Jede Protokollgruppe enthält Protokollstreams, die nach Instanz-ID organisiert sind, sodass Sie Protokolle zu bestimmten Knoten in Ihrem Cluster zurückverfolgen können.
Mit Protokolldaten arbeiten
-
Protokolldaten durchsuchen: Verwenden Sie CloudWatch Logs Insights, um strukturierte Abfragen in Ihren Loggruppen durchzuführen.
-
Metriken erstellen: Extrahieren Sie Metriken aus Protokollmustern, um benutzerdefinierte CloudWatch Metriken zu erstellen.
-
Benachrichtigungen einrichten: Konfigurieren Sie Alarme auf der Grundlage bestimmter Fehlermuster oder Protokollfrequenzen.
-
Protokolle exportieren: Laden Sie Protokolle für die Offline-Analyse oder Archivierung herunter.
Aufbewahrung von Protokollen
Anmerkung
Standardmäßig werden Protokolle 30 Tage lang aufbewahrt. Sie können die Aufbewahrungsrichtlinie für jede Protokollgruppe ändern, um Protokolle für längere Zeiträume aufzubewahren, falls dies für Compliance- oder Analysezwecke erforderlich ist.
CloudWatch Logs bietet einen zentralen Speicherort für all Ihre EMR-Protokolldaten, sodass Sie keine SSH-Verbindung zu einzelnen Clusterknoten herstellen müssen, um Probleme zu beheben oder das Anwendungsverhalten zu analysieren.
Benutzerdefinierte Metriken im EMR Monitoring Dashboard anzeigen
Nachdem Ihr EMR-Cluster mit der Konfiguration des CloudWatch Agenten und der benutzerdefinierten Metriken ausgeführt wurde, können Sie diese Metriken einfach direkt in der EMR-Konsole überwachen:
Zugriff auf Ihre benutzerdefinierten Metriken
-
Navigieren Sie in der AWS Management Console zu Ihrem EMR-Cluster.
-
Wählen Sie auf der Seite mit den Cluster-Details die Registerkarte Überwachung aus.
-
Suchen Sie oben in den Monitoring-Dashboards nach der Dropdownliste nach der Klassifizierung von Filtermetriken.
-
Verwenden Sie diesen Filter, um bestimmte Metrikkategorien auszuwählen:
-
Wählen Sie HDFS für die Anzeige NameNode und die DataNode Metriken aus.
-
Wählen Sie YARN aus, um Metriken zu sehen ResourceManager und zu speichern.
-
Wählen Sie HBasefür HBase -spezifische Leistungsdaten.
-
Wählen Sie benutzerdefinierte metrische Klassifizierungen aus, die Sie definiert haben.
-
Das Dashboard wird dynamisch aktualisiert und zeigt Diagramme für Ihre ausgewählten Metriken an, die Leistungstrends im Zeitverlauf zeigen.
Arbeiten mit metrischen Visualisierungen
-
Zeitbereiche anpassen: Ändern Sie das Zeitfenster, um aktuelle Aktivitäten oder historische Trends anzuzeigen.
-
Metriken vergleichen: Zeigen Sie mehrere verwandte Metriken side-by-side für die Korrelationsanalyse an.
-
Zoom-Funktionen: Konzentrieren Sie sich auf bestimmte Zeiträume, in denen Anomalien oder Muster auftreten.
-
Daten aktualisieren: Aktualisieren Sie Visualisierungen nahezu in Echtzeit mit den neuesten Metrikdaten.
Dieser integrierte Überwachungsansatz ermöglicht es Ihnen, sowohl standardmäßige EMR-Metriken als auch Ihre benutzerdefinierten Messwerte in einem einheitlichen Dashboard zu verfolgen, sodass Sie Leistungsprobleme, Ressourcenbeschränkungen oder Anwendungsengpässe leichter identifizieren können, ohne die EMR-Konsole verlassen zu müssen.
CloudWatch Metriken

Klassifizierung von Metriken filtern.