ログを使用して Amazon EMR における Hive クエリの問題をトラブルシューティングする方法を教えてください。
最終更新日: 2020 年 12 月 3 日
Amazon EMR の Apache Hive クエリにおいて問題が発生しています。この問題をトラブルシューティングできるようにログを収集するにはどうすればよいですか?
簡単な説明
Amazon EMR では、次の方法で Hive を操作することができます。トラブルシューティングのステップは、この使用方法によって異なります。
- Hive シェル
- Hadoop User Experience (Hue)、Java Database Connectivity (JDBC)、または Open Database Connectivity (ODBC) (Beeline および SQL Workbench/J などのクライアントで使用)
- Amazon EMR のステップ
- YARN アプリケーション
解決方法
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 バージョンを使用していることを確認してください。