로그를 사용하여 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/ 디렉터리에 로깅됩니다. 예를 들어, 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

Hive 셸에서 root(sudo)로 쿼리를 실행하는 경우 다음 로그에서 쿼리 오류를 확인합니다.

[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 콘솔을 열고 클러스터 세부 정보 페이지의 [애플리케이션 이력(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의 최신 버전을 사용하고 있는지 확인하세요.