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.
Konfigurieren der Cluster-Protokollierung und des Debuggings
Bei der Planung Ihres Clusters müssen Sie sich unter anderem für die verfügbare Debugging-Unterstützung entscheiden. Wenn Sie Ihre Datenverarbeitungsanwendung erstmals entwickeln, empfehlen wir Ihnen, die Anwendung auf einem Cluster zu testen, indem Sie eine kleine, aber repräsentative Untermenge Ihrer Daten verarbeiten. Wenn Sie dies tun, möchten Sie wahrscheinlich die Vorteile all der Debugging-Tools in Amazon EMR nutzen, z. B. die Archivierung von Protokolldateien in Amazon S3.
Wenn Sie die Entwicklung Ihrer Anwendung abgeschlossen haben und die Datenverarbeitung in die Produktionsumgebung wechselt, können Sie das Debuggen verringern. Auf diese Weise können Sie die Kosten für die Speicherung von Protokolldateiarchiven in Amazon S3 einsparen und die Verarbeitungslast für den Cluster reduzieren, da dieser den Zustand nicht mehr zu Amazon S3 schreiben muss. Der Nachteil ist, das Ihnen bei Problemen weniger Tools zur Verfügung stehen, um das Problem zu untersuchen.
Standardmäßige Protokolldateien
Standardmäßig schreibt jeder Cluster Protokolldateien auf dem Primärknoten. Die Dateien werden in das /mnt/var/log/
-Verzeichnis geschrieben. Sie können darauf zugreifen, indem Sie sich, wie in Mit dem Primärknoten über SSH verbinden beschrieben, per SSH mit dem Primärknoten verbinden.
Anmerkung
Wenn Sie Amazon-EMR-Version 6.8.0 oder früher verwenden, werden Protokolldateien während der Clusterbeendigung in Amazon S3 gespeichert, sodass Sie nicht mehr auf die Protokolldateien zugreifen können, wenn der Primärknoten beendet wird. Amazon EMR veröffentlicht 6.9.0 und höher und archiviert Protokolle während der Cluster-Herunterskalierung in Amazon S3, sodass die auf dem Cluster generierten Protokolldateien auch nach dem Beenden des Knotens bestehen bleiben.
Sie müssen nicht alles aktivieren, um die Protokolldateien auf dem Primärknoten schreiben zu lassen. Dies ist das Standardverhalten von Amazon EMR und Hadoop.
Ein Cluster generiert mehrere Arten von Protokolldateien. Diese umfassen unter anderem:
-
Schritt-Protokolle – Diese Protokolle werden vom Amazon-EMR-Service generiert und enthalten Informationen über den Cluster und die Ergebnisse der einzelnen Schritte. Die Protokolldateien werden im
/mnt/var/log/hadoop/steps/
-Verzeichnis auf dem Primärknoten gespeichert. Jeder Schritt protokolliert seine Ergebnisse in einem separaten, nummerierten Unterverzeichnis:/mnt/var/log/hadoop/steps/s-
für den ersten Schritt,stepId1
//mnt/var/log/hadoop/steps/s-
für den zweiten Schritt, und so weiter. Die 13-stellige Schritt-ID (z. B. stepId1 stepId2) ist für einen Cluster eindeutig.stepId2
/ -
Hadoop- und YARN-Komponentenprotokolle — Die Protokolle für Komponenten, die sowohl Apache YARN als auch zugeordnet sind MapReduce, befinden sich beispielsweise in separaten Ordnern in.
/mnt/var/log
Die Speicherorte der Protokolldateien für die Hadoop-Komponenten unter/mnt/var/log
lauten folgendermaßen: hadoop-hdfs, hadoop-mapreduce, hadoop-httpfs und hadoop-yarn. Das hadoop-state-pusher Verzeichnis ist für die Ausgabe des Hadoop-State-Pusher-Prozesses vorgesehen. -
Bootstrap-Aktion-Protokolle – Wenn Ihr Auftrag Bootstrap-Aktionen verwendet, werden die Ergebnisse dieser Aktionen protokolliert. Die Protokolldateien werden in /mnt/var/log/bootstrap-actions/ auf dem Primärknoten gespeichert. Jede Bootstrap-Aktion protokolliert ihre Ergebnisse in einem separaten, nummerierten Unterverzeichnis:
/mnt/var/log/bootstrap-actions/1/
für die erste Bootstrap-Aktion,/mnt/var/log/bootstrap-actions/2/
für die zweite, und so weiter. -
Instance-Statusprotokolle – Diese Protokolle enthalten Informationen über die CPU, den Arbeitsspeicher und die Garbage Collector-Threads des Knotens. Die Protokolldateien werden in
/mnt/var/log/instance-state/
auf dem Primärknoten gespeichert.
Archivieren von Protokolldateien in Amazon S3
Anmerkung
Sie können mit dem yarn logs
-Dienstprogramm derzeit keine Protokollzusammenführung in Amazon S3 durchführen.
Amazon EMR veröffentlicht 6.9.0 und höher und archiviert Protokolle während der Cluster-Herunterskalierung in Amazon S3, sodass die auf dem Cluster generierten Protokolldateien auch nach dem Beenden des Knotens bestehen bleiben. Dieses Verhalten wird automatisch aktiviert, sodass Sie nichts unternehmen müssen, um es zu aktivieren. Für Amazon-EMR-Versionen 6.8.0 und früher können Sie einen Cluster so konfigurieren, dass die auf dem Primärknoten gespeicherten Protokolldateien regelmäßig in Amazon S3 archiviert werden. Auf diese Weise wird sichergestellt, dass die Protokolldateien verfügbar sind, nachdem der Cluster beendet wird (unabhängig davon, ob dieser normal heruntergefahren wurde oder ob ein Fehler aufgetreten ist). Amazon EMR archiviert die Protokolldateien in 5-Minuten-Intervallen in Amazon S3.
Um die Protokolldateien in Amazon S3 für Amazon-EMR-Versionen 6.8.0 zu archivieren, müssen Sie dieses Feature beim Start des Clusters aktivieren. Sie können dies entweder über Konsole, die CLI oder die API erledigen. Die Protokollierung ist bei über die Konsole gestarteten Clustern standardmäßig aktiviert. Für Cluster, die per CLI oder über die API gestartet wurden, muss die Protokollierung in Amazon S3 manuell aktiviert werden.
Anmerkung
Wir haben die Amazon-EMR-Konsole neu gestaltet, um sie benutzerfreundlicher zu gestalten. Unter Amazon EMR-Konsole erfahren Sie mehr über die Unterschiede zwischen der alten und der neuen Konsolenerfahrung.
So verschlüsseln Sie Protokolldateien, die Amazon S3 mit einem kundenverwalteten AWS -KMS-Schlüssel gespeichert sind
Mit Amazon EMR Version 5.30.0 und höher (außer Amazon EMR 6.0.0) können Sie in Amazon S3 gespeicherte Protokolldateien mit einem vom Kunden verwalteten KMS-Schlüssel verschlüsseln. AWS Um diese Option über die Konsole zu aktivieren, führen Sie die Schritte unter Archivieren von Protokolldateien in Amazon S3 aus. Ihr Amazon-EC2-Instance-Profil und Ihre Amazon-EMR-Rolle müssen die folgenden Voraussetzungen erfüllen:
-
Das für den Cluster verwendete Amazon-EC2-Instance-Profil muss über die Berechtigung
kms:GenerateDataKey
verfügen. -
Die für den Cluster verwendete Amazon-EMR-Rolle muss über die Berechtigung
kms:DescribeKey
verfügen. -
Das Amazon EC2 EC2-Instance-Profil und die Amazon EMR-Rolle müssen der Liste der Schlüsselbenutzer für den angegebenen kundenverwalteten AWS KMS-Schlüssel hinzugefügt werden, wie die folgenden Schritte zeigen:
-
Um die AWS Region zu ändern, verwenden Sie die Regionsauswahl in der oberen rechten Ecke der Seite.
-
Wählen Sie den Alias des zu ändernden KMS-Schlüssels aus.
-
Wählen Sie auf der Seite mit den Schlüsseldetails unter Key Users (Schlüsselbenutzer( die Option Add (Hinzufügen) aus.
-
Wählen Sie im Dialogfeld Schlüsselbenutzer hinzufügen Ihr Amazon-EC2-Instance-Profil und Ihre Amazon-EMR-Rolle aus.
-
Wählen Sie Hinzufügen aus.
Weitere Informationen finden Sie unter Von Amazon EMR verwendete IAM-Servicerollen und Verwenden von Schlüsselrichtlinien im AWS Key Management Service-Entwicklerhandbuch.
So aggregieren Sie Protokolle in Amazon S3 über die AWS CLI
Anmerkung
Sie können mit dem yarn logs
-Dienstprogramm derzeit keine Protokollzusammenführung durchführen. Sie können die durch dieses Verfahren unterstützte Aggregation nutzen.
Bei der Protokollaggregation (Hadoop 2.x) werden Protokolle für eine bestimmte Anwendung aus allen Containern in einer einzigen Datei zusammengestellt. Um die Protokollaggregation für Amazon S3 mithilfe von zu aktivieren AWS CLI, verwenden Sie beim Clusterstart eine Bootstrap-Aktion, um die Protokollaggregation zu aktivieren und den Bucket zum Speichern der Protokolle anzugeben.
-
Um die Protokollaggregation zu aktivieren, erstellen Sie die folgende Konfigurationsdatei mit dem Namen
myConfig.json
, die Folgendes enthält:[ { "Classification": "yarn-site", "Properties": { "yarn.log-aggregation-enable": "true", "yarn.log-aggregation.retain-seconds": "-1", "yarn.nodemanager.remote-app-log-dir": "s3:\/\/
DOC-EXAMPLE-BUCKET
\/logs" } } ]Geben Sie den folgenden Befehl ein und ersetzen Sie
durch den Namen Ihres EC2-Schlüsselpaars. Sie können zusätzlich jeden der roten Texte durch Ihre eigenen Konfigurationen ersetzen.myKey
aws emr create-cluster --name "
Test cluster
" \ --release-labelemr-7.1.0
\ --applications Name=Hadoop
\ --use-default-roles \ --ec2-attributes KeyName=myKey
\ --instance-typem5.xlarge
\ --instance-count3
\ --configurations file://./myConfig.jsonWenn Sie die Instance-Anzahl ohne den
--instance-groups
-Parameter angeben, wird ein einzelner Primärknoten gestartet. Die verbleibenden Instances werden dabei als Core-Knoten gestartet. Alle Knoten verwenden den im Befehl angegebenen Instance-Typ.Anmerkung
Wenn Sie zuvor nicht die standardmäßige EMR-Servicerolle und das EC2-Instance-Profil erstellt haben, führen Sie
aws emr create-default-roles
aus, um sie zu erstellen, bevor Sie den Unterbefehlcreate-cluster
ausführen.
Weitere Informationen zur Verwendung von Amazon EMR-Befehlen finden Sie in der AWS CLIAWS CLI Befehlsreferenz.
Protokollspeicherorte
Die folgende Liste enthält alle Protokolltypen und ihre Speicherorte in Amazon S3. Sie können diese zur Behebung von Problemen mit Amazon EMR verwenden.
- Schrittprotokolle
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/steps/<step-id>
/ - Anwendungsprotokolle
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/containers/Dieser Speicherort umfasst Container
stderr
undstdout
,directory.info
,prelaunch.out
undlaunch_container.sh
-Protokolle. - Resource-Manager-Protokolle
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<leader-instance-id>
/applications/hadoop-yarn/ - Hadoop HDFS
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<all-instance-id>
/applications/hadoop-hdfs/Dieser Speicherort umfasst NameNode, DataNode, und TimelineServer YARN-Protokolle.
- Knoten-Manager-Protokolle
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<all-instance-id>
/applications/hadoop-yarn/ - Instance-Statusprotokolle
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<all-instance-id>
/daemons/instance-state/ - Bereitstellungsprotokolle für Amazon EMR
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<leader-instance-id>
/provision-node/* - Hive-Protokolle
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<leader-instance-id>
/applications/hive/*-
Um Hive-Protokolle in Ihrem Cluster zu finden, entfernen Sie das Sternchen (
*
) und fügen Sie/var/log/hive/
an den obigen Link an. -
Um HiveServer zwei Logs zu finden, entferne das Sternchen (
*
) und füge esvar/log/hive/hiveserver2.log
an den obigen Link an. -
Um HiveCLI-Protokolle zu finden, entfernen Sie das Sternchen (
*
) und fügen Sie/var/log/hive/user/hadoop/hive.log
an den obigen Link an. -
Um Hive-Metastore-Server-Protokolle zu finden, entfernen Sie das Sternchen (
*
) und fügen Sie/var/log/hive/user/hive/hive.log
an den obigen Link an.
Wenn Ihr Fehler im Primär- oder Aufgabenknoten Ihrer Tez-Anwendung auftritt, stellen Sie die Protokolle des entsprechenden Hadoop-Containers bereit.
-
Das Debugging-Tool aktivieren
Das Debugging-Tool ermöglicht Ihnen, Protokolldateien aus der Amazon-EMR-Konsole zu durchsuchen. Weitere Informationen finden Sie unter Protokolldateien im Debugging-Tool anzeigen. Wenn Sie in einem Cluster Debugging aktivieren, archiviert Amazon EMR die Protokolldateien zu Amazon S3 und indiziert anschließend diese Dateien. Sie können dann die Konsole zum intuitiven Durchsuchen der Schritt-, Auftrags-, Aufgaben- und Aufgabenversuchsprotokolle für den Cluster nutzen.
Um das Debugging-Tool in der Amazon-EMR-Konsole zu verwenden, müssen Sie das Debugging aktivieren, wenn Sie den Cluster mithilfe der Konsole, der Befehlszeilen-Schnittstelle oder der API starten. Beachten Sie, dass die neue Amazon-EMR-Konsole das Debugging-Tool nicht bietet.
Informationen zur Debugging-Option
Die Amazon-EMR-Versionen 4.1.0 bis 5.27.0 unterstützen Debugging in allen Regionen. Andere Amazon-EMR-Versionen unterstützen die Debugging-Option nicht. Mit Wirkung zum 23. Januar 2023 wird Amazon EMR das Debugging-Tool für alle Versionen einstellen.
Amazon EMR erstellt eine Amazon-SQS-Warteschlange zum Verarbeiten der Debugging-Daten. Möglicherweise fallen Kosten für Nachrichten an. Amazon SQS bietet jedoch ein kostenloses Kontingent von bis zu 1 000 000 Anforderungen. Weitere Informationen finden Sie unter https://aws.amazon.com/sqs
Das Debugging erfordert die Verwendung von Rollen. Ihre Servicerolle und das Instance-Profil müssen die Verwendung aller Amazon-SQS-API-Operationen zulassen. Wenn Ihre Rollen zu verwalteten Amazon-EMR-Richtlinien zugeordnet sind, müssen Sie keine Änderungen an Ihren Rollen vornehmen. Wenn Sie benutzerdefinierte Rollen nutzen, müssen Sie sqs:*
-Berechtigungen hinzufügen. Weitere Informationen finden Sie unter Konfigurieren Sie IAM-Servicerollen für Amazon-EMR-Berechtigungen für AWS
Services und Ressourcen.