ログを使用して Amazon EMR における Hive クエリの問題をトラブルシューティングする方法を教えてください。

最終更新日: 2020 年 12 月 3 日

Amazon EMR の Apache Hive クエリにおいて問題が発生しています。この問題をトラブルシューティングできるようにログを収集するにはどうすればよいですか?

簡単な説明

Amazon EMR では、次の方法で Hive を操作することができます。トラブルシューティングのステップは、この使用方法によって異なります。

解決方法

Hive シェル

Hive ログは、クラスターのマスターノードの次のディレクトリに格納されます。詳細については、「 マスターノードのログファイルを表示する 」を参照してください。

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

クエリ関連のエラーはすべて、/mnt/var/log/hive/user/ ディレクトリに記録されます。例えば、hadoop (デフォルトユーザー) として Hive シェルからクエリを実行する場合、クエリエラーは、次のディレクトリに記録されます。

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

root (sudo) として Hive シェルからクエリを実行する場合は、クエリエラーがないかどうかを次のログで確認します。

[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、または ODBC

HiveServer2 では、Beeline や SQL Workbench/J などのクライアントで Hive に対するクエリを実行することができます。詳細については、Hive ウェブサイトの「HiveServer2 の概要」を参照してください。JDBC または ODBC ドライバを使用してクライアントから Hive に接続できない場合は、エラーが発生していないか hive-server2 ログで確認します。

[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

hive-server2 ログは、スロークエリ、HiveServer2 起動エラー、クエリ送信の問題などのサービス関連の問題のトラブルシューティングに使用することもできます。

Amazon EMR のステップ

ステップログの確認。このログは、/var/log/hadoop/steps/ にあります。例:

[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 アプリケーションの履歴

YARN アプリケーションの詳細を表示およびモニタリングする最も簡単な方法は、Amazon EMR コンソールを開いてから、クラスターの詳細ページの [アプリケーションの履歴] タブをチェックすることです。詳細については、「アプリケーション履歴の表示」を参照してください。

Hive クエリ実行時にバックグラウンドで実行されている Tez または MapReduce アプリケーションでエラーが発生しているかどうかを確認するには、Amazon Simple Storage Service (Amazon S3) 上の YARN アプリケーションのログを確認します。詳細については、「Amazon S3 にアーカイブされたログファイルを表示する」を参照してください。例:

$ 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

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください