Comment utiliser les journaux pour résoudre les problèmes liés aux requêtes Hive dans Amazon EMR ?

Date de la dernière mise à jour : 03/12/2020

Je rencontre des difficultés avec les requêtes Apache Hive dans Amazon EMR. Comment collecter les journaux afin de pouvoir résoudre ces problèmes ?

Brève description

Amazon EMR prend en charge les méthodes suivantes pour utiliser Hive. Les étapes de résolution des problèmes diffèrent selon la méthode utilisée :

Résolution

Shell Hive

Les journaux Hive sont stockés dans les répertoires suivants sur le nœud principal du cluster. Pour plus d'informations, voir Afficher les fichiers journaux sur le nœud principal.

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

Toutes les erreurs liées aux requêtes sont consignées dans le répertoire /mnt/var/log/hive/user/. Par exemple, si vous exécutez des requêtes depuis le shell Hive en tant que hadoop (utilisateur par défaut), les erreurs liées aux requêtes sont consignées dans le répertoire suivant :

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

Si vous exécutez des requêtes depuis le shell Hive en tant que root (sudo), vérifiez si le journal suivant contient des erreurs liées aux requêtes :

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

Hue, JDBC ou ODBC

HiveServer2 permet aux clients tels que Beeline ou SQL Workbench/J d'exécuter des requêtes sur Hive. Pour plus d'informations, consultez la rubrique Présentation de HiveServer2 sur le site Web de Hive. Si vous rencontrez des difficultés pour vous connecter à Hive depuis des clients qui utilisent les pilotes JDBC ou ODBC, recherchez si les journaux hive-server2 contiennent des erreurs :

[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

Vous pouvez également utiliser les journaux hive-server2 pour résoudre les problèmes liés aux services, comme les requêtes lentes, les échecs de démarrage HiveServer2, les problèmes de soumission de requêtes, etc.

Étapes Amazon EMR

Vérifiez les journaux des étapes, qui sont situés dans /var/log/hadoop/steps/. Par exemple :

[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

Historique de l'application YARN

La solution la plus simple pour consulter et surveiller les détails de l'application YARN consiste à ouvrir la console Amazon EMR, puis à consulter l'onglet Historique de l'application de la page de détails du cluster. Pour plus d'informations, consultez Afficher l'historique de l'application.

Pour vérifier si des erreurs se sont produites dans une application Tez ou MapReduce qui s'exécute en arrière-plan lorsque vous exécutez une requête Hive, consultez les journaux de l'application YARN sur Amazon Simple Storage Service (Amazon S3). Pour plus d'informations, consultez Afficher les fichiers journaux archivés dans Amazon S3. Par exemple :

$ 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

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de ligne de commande AWS (AWS CLI), assurez-vous que vous utilisez la version la plus récente d'AWS CLI.