ログを使用して Amazon EMR における Hive クエリの問題をトラブルシューティングするにはどうすればよいですか?

所要時間2分
0

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

簡単な説明

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

解決方法

Hive シェル

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

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

Hive クエリを送信した場所に基づいて、クエリログは Amazon EMR マスターノードの /mnt/var/hive/ の下のさまざまな場所にログ記録されます。この場所のログは、Amazon EMR クラスターを作成したときに設定した Amazon S3 LogUri にもプッシュされます。

例:

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

例えば、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

Hue、JDBC、または ODBC

HiveServer2 を使用すると、Beeline、JDBC、ODBC (例: SQL Workbench/J 経由) などのクライアントが Hive に対してクエリを実行できます。

HiveServer2 でサポートされているクライアントの詳細については、Confluence ウェブサイトの「HiveServer2 clients」(HiveServer2 クライアント) を参照してください。

次の条件で hive-server2 ログにエラーがないことを確認してください。

  • これらのクライアントのいずれかによって送信された失敗したクエリをトラブルシューティングする必要がある。
  • JDBC または ODBC ドライバーを使用したクライアントから Hive への接続で問題が発生している。
[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

デフォルトでは、Amazon EMR に対するすべての Hive クエリは TEZ エンジンを使用することに注意してください。クエリは YARN アプリケーションをトリガーする可能性があります。YARN アプリケーションの障害をトラブルシューティングするには、YARN コンテナログを参照してください。詳細については、この記事の「YARN アプリケーションの履歴」のセクションを参照してください。

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 コンソールを開くことです。 その後、クラスターの詳細ページの [Application history] (アプリケーション履歴) タブを確認します。詳細については、「View application history」(アプリケーション履歴を表示する) を参照してください。

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 バージョンを使用していることを確認してください


関連情報

Hive がクエリ結果を出力する際に発生する、Amazon EMR での Hive Java ヒープスペースの例外 (OutOfMemoryError) の解決方法を教えてください

Hive クラスターエラー

AWS公式
AWS公式更新しました 2年前
コメントはありません