Wie kann ich Protokolle verwenden, um Probleme mit Hive-Abfragen in Amazon EMR zu beheben?

Lesedauer: 4 Minute
0

Ich habe Probleme mit Apache-Hive-Abfragen in Amazon EMR. Ich möchte Protokolle erfassen, um diese Probleme zu beheben.

Kurzbeschreibung

Amazon EMR unterstützt die folgenden Methoden für die Arbeit mit Hive. Die Schritte zur Fehlerbehebung unterscheiden sich je nachdem, welche Methode Sie verwenden:

Lösung

Hive Shell

Hive-Protokolle werden in den folgenden Verzeichnissen auf dem Hauptknoten des Clusters gespeichert. Weitere Informationen finden Sie unter Protokolldateien über den Hauptknoten anzeigen.

  • /mnt/var/log/hive/
  • /mnt/var/log/hive/user/

Je nachdem, wo Sie Ihre Hive-Anfrage getätigt haben, werden Ihre Abfrageprotokolle an verschiedenen Orten unter /mnt/var/hive/ des Amazon-EMR-Hauptknotens protokolliert. Protokolle an diesem Speicherort werden auch an die Amazon S3 LogUri weitergeleitet, die Sie bei der Erstellung des Amazon EMR Clusters konfiguriert haben.

Beispiel:

s3://example-location/example-cluster-id/node/example-instance-id/applications/hive

Wenn Sie beispielsweise Abfragen von der Hive-Shell aus als hadoop (dem Standardbenutzer) ausführen, werden Abfragefehler im folgenden Verzeichnis protokolliert:

[hadoop@ip-172-xx-xx-x ~]$ cd /mnt/var/log/hive/user/hadoop
[hadoop@ip-172-xx-xx-x hadoop]$ tail -20 hive.log

Hue, JDBC oder ODBC

HiveServer2 ermöglicht es Clients wie Beeline, JDBC oder ODBC (z. B. über SQL Workbench/J), Abfragen für Hive auszuführen.

Weitere Informationen zu Clients, die von HiveServer2 unterstützt werden, finden Sie auf der Confluence-Website unter HiveServer2 Clients.

Suchen Sie unter den folgenden Umständen in den Protokollen von hive-server2 nach Fehlern:

  • Sie müssen ein Problem mit einer Anfrage beheben, die von einem dieser Clients ausgeführt wurde.
  • Sie haben Probleme, von Clients aus, die JDBC- oder ODBC-Treiber verwenden, eine Verbindung zu Hive herzustellen.
[hadoop@ip-172-xx-xx-x ~]$ cd /mnt/var/log/hive/
[hadoop@ip-172-xx-xx-xxx hive]$ ls -ltr
total 52
-rw-r--r-- 1 hive hive 42 May 25 19:29 hive-server2.out
drwxrwxrwt 4 root root 30 May 25 19:29 user
-rw-r--r-- 1 hive hive 49075 May 25 19:29 hive-server2.log

[hadoop@ip-172-31-33-9 hive]$ tail -20 hive-server2.log

Beachten Sie, dass standardmäßig alle Hive-Abfragen auf Amazon EMR die TEZ Engine nutzen. Die Abfrage könnte eine YARN-Anwendung auslösen. Informationen zur Behebung des Fehlers einer YARN-Anwendung finden Sie in den YARN-Container-Protokollen. Weitere Informationen finden Sie im Abschnitt zum YARN-Anwendungsverlauf in diesem Artikel.

Schritte für Amazon EMR

Überprüfen Sie die Schrittprotokolle, die sich in /var/log/hadoop/steps/ befinden. Zum Beispiel:

[hadoop@ip-172-xx-xx-x s-3C4CZ9G05FEAX]$cd /var/log/hadoop/steps/s-3C4CZ9G05FEAX
[hadoop@ip-172-xx-xx-x s-3C4CZ9G05FEAX]$ ls -ltr
total 12
-rw-rw-r-- 1 hadoop hadoop 0 May 25 21:09 syslog
-rw-rw-r-- 1 hadoop hadoop 1304 May 25 21:09 stdout
-rw-rw-r-- 1 hadoop hadoop 213 May 25 21:09 stderr
-rw-rw-r-- 1 hadoop hadoop 2589 May 25 21:09 controller

YARN-Anwendungsverlauf

Die einfachste Möglichkeit, YARN-Anwendungsdetails einzusehen und zu überwachen, besteht darin, zuerst die Amazon-EMR-Konsole zu öffnen.Schauen Sie dann auf der Detailseite des Clusters auf der Registerkarte Anwendungsverlauf nach. Weitere Informationen finden Sie unter Anwendungsverlauf anzeigen.

Um festzustellen, ob Fehler in einer Tez- oder MapReduce-Anwendung aufgetreten sind, die im Hintergrund ausgeführt wird, während Sie eine Hive-Abfrage ausführen, überprüfen Sie die YARN-Anwendungsprotokolle im Amazon Simple Storage Service (Amazon S3). Weitere Informationen finden Sie unter In Amazon S3 archivierte Protokolldateien anzeigen. Zum Beispiel:

$ aws s3 ls s3://aws-logs-223377617334-us-west-2/elasticmapreduce/j-3MCDUQO2MWNJ5/
                           PRE containers/
                           PRE node/
                           PRE steps/
$ aws s3 ls s3://aws-logs-223377617334-us-west-2/elasticmapreduce/j-3MCDUQO2MWNJ5/node/i-045d100a1fcd13ef2/
                           PRE applications/
                           PRE bootstrap-actions/
                           PRE daemons/
                           PRE provision-node/
                           PRE setup-devices/
$ aws s3 ls s3://aws-logs-223377617334-us-west-2/elasticmapreduce/j-3MCDUQO2MWNJ5/containers/application_123456789_0001/container_1527279117205_0001_01_000001/
2020-10-25 15:46:04 842 stdout.gz
2020-10-25 15:46:04 4089 syslog.gz

**Hinweis:**Wenn Sie beim Ausführen von Befehlen im AWS Command Line Interface (AWS CLI) Fehlermeldungen erhalten, stellen Sie sicher, dass Sie die neueste Version des AWS CLI verwenden.


Weitere Informationen

Wie behebe ich Heap-Space-Ausnahmen bei Hive Java vom Typ „OutOfMemoryError“ in Amazon EMR, die auftreten, wenn Hive die Abfrageergebnisse ausgibt?

Hive-Clusterfehler

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren