로그를 사용하여 Amazon EMR에서 Hive 쿼리 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 9월 20일

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

예를 들어, Hive 셸에서 hadoop(기본 사용자)으로 쿼리를 실행하는 경우 쿼리 오류는 다음 디렉터리에 로깅됩니다.

[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 명령줄 인터페이스(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.