如何使用日誌對 Amazon EMR 中 Hive 查詢的問題進行疑難排解?

2 分的閱讀內容
0

我在 Amazon EMR 中使用 Apache Hive 查詢時遇到問題。我想收集日誌,以便可以解決這些問題。

簡短描述

Amazon EMR 支援使用 Hive 的下列方法。疑難排解步驟會因您使用的方法而異:

解決方法

Hive Shell

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 Shell 執行查詢,則會在下列目錄中記錄查詢錯誤:

[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 用戶端

在下列情況下,檢查 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 主控台。然後,檢查叢集詳細資訊頁面的應用程式歷史記錄標籤。如需詳細資訊,請參閱檢視應用程式歷史記錄

若要查看執行 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 Command Line Interface (AWS CLI) 命令時收到錯誤,請確保您使用的是最新的 AWS CLI 版本


相關資訊

如何解決在 Hive 輸出查詢結果時 Amazon EMR 上發生的「OutOfMemoryError」Hive Java 堆積空間例外狀況?

Hive 叢集錯誤

AWS 官方
AWS 官方已更新 2 年前