Amazon Elastic MapReduce와 Hive
Amazon Elastic MapReduce와 Hive (HiveAmazonElasticMapReduce)
AWS의 관리형 Hadoop 클러스터 서비스인 Amazon Elastic MapReduce(EMR)에서 Hive를 실행하는 방법을 다루는 문서예요. EMR이 Hive 클러스터를 어떻게 지원하는지, 메타스토어·CLI·S3 테이블 등 활용법을 살펴봅니다.
출처: 문서
본문
Amazon Elastic MapReduce와 Hive
Amazon Elastic MapReduce는 Amazon Web Services(AWS)의 웹 스케일 인프라에서 관리형·리사이즈 가능한 Hadoop 클러스터를 쉽게 기동할 수 있게 해주는 웹 서비스입니다. Elastic MapReduce는 Hive와 Hadoop 클러스터를 쉽게 기동할 수 있게 하고, 다양한 클러스터 크기를 고를 수 있는 유연성을 제공하며, 처리가 완료되면 자동으로 종료할 수 있게 해줍니다. 최소 사용량이나 장기 계약 없이 사용한 리소스에 대해서만 비용을 지불합니다.
Amazon Elastic MapReduce는 다음 방식으로 Hive 클러스터 사용을 단순화합니다:
- 수천 개의 EC2 인스턴스로 구성된 Hadoop 클러스터의 프로비저닝 처리
- 선택한 하드웨어에 맞춰 마스터·슬레이브 노드에 Hadoop 설치 및 구성
- 클러스터 마스터 노드에 Hive를 설치하고 Hadoop JobTracker·NameNode와 통신하도록 구성
- 클러스터 수명 동안 Hadoop 태스크를 관리·모니터링·디버깅하기 위한 단순한 API, 웹 UI, 전용 도구 제공
- Spot Instances, Elastic IP, IAM(Identity and Access Management) 같은 AWS 기능과 S3·EC2 같은 AWS 서비스와의 깊은 통합 및 최적화된 성능 제공
Amazon Elastic MapReduce 시작 가이드는 다음 링크를 참고하세요:
http://docs.amazonwebservices.com/ElasticMapReduce/latest/GettingStartedGuide/
Amazon Elastic MapReduce는 Hive 클러스터를 실행하기 위한 여러 클라이언트를 제공합니다. AWS Management Console, Amazon Elastic MapReduce Ruby Client, AWS Java SDK로 Hive 클러스터를 기동할 수 있습니다. 또한 같은 클러스터에 여러 버전의 Hive를 설치·실행할 수 있어 기존 버전과 함께 최신 Hive 버전을 벤치마킹할 수 있습니다. 기존 Hive 클러스터에 최신 Hive 버전을 직접 설치할 수도 있습니다.
지원되는 버전 (Supported versions):
| Hadoop Version | Hive Version |
| 0.18 | 0.4 |
| 0.20 | 0.5, 0.7, 0.7.1 |
Hive 기본값 (Hive Defaults)
Thrift 통신 포트 (Thrift Communication port)
| Hive Version | Thrift port |
| 0.4 | 10000 |
| 0.5 | 10000 |
| 0.7 | 10001 |
| 0.7.1 | 10002 |
로그 파일 (Log File)
| Hive Version | Log location |
| 0.4 | /mnt/var/log/apps/hive.log |
| 0.5 | /mnt/var/log/apps/hive_05.log |
| 0.7 | /mnt/var/log/apps/hive_07.log |
| 0.7.1 | /mnt/var/log/apps/hive_07_1.log |
MetaStore
기본적으로 Amazon Elastic MapReduce는 마스터 노드에 미리 설치된 MySQL을 Hive 메타스토어로 사용합니다. 또는 Amazon RDS(Relational Database Service)를 사용해 메타스토어가 클러스터 수명을 넘어 지속되도록 할 수 있습니다. 이를 통해 여러 Hive 클러스터 간에 메타스토어를 공유할 수도 있습니다. MySQL 데이터베이스의 기본 위치를 외부 영구 저장소 위치로 덮어쓰기만 하면 됩니다.
Hive CLI
EMR은 마스터 노드에 SSH 접근을 허용하도록 구성합니다. 마스터 노드에 로그인해 Hive CLI로 Hive 커맨드를 실행할 수 있습니다. 클러스터에 여러 버전의 Hive가 설치되어 있다면 각각 별도 커맨드로 접근할 수 있습니다: | | | |---|---| | Hive Version | Hive command | | 0.4 | hive | | 0.5 | hive-0.5 | | 0.7 | hive-0.7 | | 0.7.1 | hive-0.7.1 |
EMR은 주어진 클러스터의 각 설치 Hive 버전마다 별도의 Hive 메타스토어와 Hive 웨어하우스를 구성합니다. 따라서 한 버전으로 만든 테이블은 다른 버전으로 만든 테이블과 간섭하지 않습니다. 단, 여러 Hive 테이블이 같은 위치를 가리키게 되면 한 테이블의 갱신이 다른 테이블에도 보이게 됩니다.
Hive 서버 (Hive Server)
EMR은 Hive 클러스터의 마스터 노드에서 Thrift Hive 서버를 실행합니다. Hive JDBC 드라이버를 통해 어떤 JDBC 클라이언트(예: squirrel SQL)로도 접근할 수 있습니다. 각 Hive 버전의 JDBC 드라이버는 다음 링크에서 내려받을 수 있습니다: | | | |---|---| | Hive Version | Hive JDBC | | 0.5 | http://aws.amazon.com/developertools/0196055244487017 | | 0.7 | http://aws.amazon.com/developertools/1818074809286277 | | 0.7.1 | http://aws.amazon.com/developertools/8084613472207189 |
JDBC 드라이버로 Hive 서버에 연결하는 과정은 다음 링크를 참고하세요:
배치 쿼리 실행 (Running Batch Queries)
커맨드 라인 클라이언트에서 원격으로 쿼리를 제출할 수도 있습니다. 현재 각 클러스터에는 256단계(step) 제한이 있다는 점을 유의하세요. 256개보다 많은 단계를 실행해야 한다면 Hive CLI로 직접 쿼리를 실행하거나 JDBC 드라이버로 쿼리를 제출하는 것을 권장합니다.
Hive S3 테이블 (Hive S3 Tables)
Elastic MapReduce Hive 클러스터는 S3와 통신하도록 구성되어 제공됩니다. 테이블을 만들어 S3 위치를 가리키면, 제공한 자격 증명으로 Hive와 Hadoop이 S3와 자동으로 통신합니다.
데이터를 S3 버킷으로 옮긴 뒤에는 테이블을 S3의 해당 위치만 가리키게 하면 Hive로 데이터를 읽거나 처리할 수 있습니다. S3에 파티션 테이블도 만들 수 있습니다. Elastic MapReduce의 Hive는 S3에서 동적 파티셔닝(dynamic partitioning)을 지원합니다.
Hive 로그 (Hive Logs)
Hive 애플리케이션 로그: 모든 Hive 애플리케이션 로그는 /mnt/var/log/apps/ 디렉터리로 리다이렉트됩니다.
Hadoop 데몬 로그: Hadoop 데몬 로그는 /mnt/var/log/hadoop/ 폴더에서 확인할 수 있습니다.
Hadoop 태스크 시도 로그는 클러스터의 각 슬레이브 노드의 /mnt/var/log/hadoop/userlogs/ 폴더에서 확인할 수 있습니다.
튜토리얼 (Tutorials)
Elastic MapReduce에서 Hive를 시작하기 위한 다음 Hive 튜토리얼을 사용할 수 있습니다:
-
Google Books n-grams 데이터와 Apache Hive를 이용한 트렌드 토픽 찾기 (Elastic MapReduce) http://aws.amazon.com/articles/Elastic-MapReduce/5249664154115844
-
고성능 컴퓨팅 인스턴스로 Apache Hive와 Amazon Elastic MapReduce를 이용한 컨텍스트 광고 http://aws.amazon.com/articles/Elastic-MapReduce/2855
-
Hive, Amazon Elastic MapReduce, Amazon SimpleDB로 데이터 웨어하우스 운영하기 http://aws.amazon.com/articles/Elastic-MapReduce/2854
-
Amazon ElasticMapReduce에서 Hive 실행하기 http://aws.amazon.com/articles/2857
또한 Amazon은 단계별 비디오 튜토리얼을 제공합니다:
지원 (Support)
Elastic MapReduce에서 Hive에 관한 질문은 Elastic MapReduce 포럼에서 할 수 있습니다:
https://forums.aws.amazon.com/forum.jspa?forumID=52
자세한 내용은 EMR 개발자 가이드도 참고하세요:
http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/
기고: Vaibhav Aggarwal
더 알아보기 (Learn more)
EMR은 AWS 인프라에서 Hadoop·Hive 클러스터를 관리형으로 제공해요. 메타스토어는 MySQL을 기본으로 하되 RDS로 영구화·공유할 수 있고, 각 Hive 버전마다 별도 CLI(hive-0.5 등)와 Thrift 포트를 가집니다. S3에 테이블을 직접 연결해 데이터를 읽을 수도 있습니다.