Amazon EMR을 사용하여 DynamoDB에서 테이블 내보내기, 가져오기, 쿼리 및 조인
참고
Amazon EMR-DynamoDB 커넥터는 GitHub에서 오픈 소스로 제공됩니다. 자세한 내용은 https://github.com/awslabs/emr-dynamodb-connector
DynamoDB는 완전관리형 NoSQL 데이터베이스 서비스로서 원활한 확장성과 함께 빠르고 예측 가능한 성능을 제공합니다. 개발자는 데이터베이스 테이블을 만들고 해당 요청 트래픽 또는 스토리지를 제한 없이 확장할 수 있습니다. DynamoDB는 테이블의 데이터와 트래픽을 충분한 수의 서버로 자동 분산하여 고객이 지정한 요청 용량과 저장된 데이터 규모를 처리하면서도 일관되고 빠른 성능을 발휘합니다. 여기에 Amazon EMR 및 Hive를 사용하면 DynamoDB에 저장된 데이터와 같은 대용량 데이터도 빠르고 효율적으로 처리할 수 있습니다. DynamoDB에 대한 자세한 내용은 Amazon DynamoDB 개발자 안내서를 참조하세요.
Apache Hive는 사용이 쉬우면서 SQL과 유사한 쿼리 언어(HiveQL)로 map reduce 클러스터에 대해 쿼리를 실행할 때 사용하는 소프트웨어 계층입니다. 이 소프트웨어는 하둡 아키텍처를 기반으로 실행됩니다. Hive 및 HiveQL에 대한 자세한 내용은 HiveQL language manual
DynamoDB 연결 기능이 포함된 사용자 지정 버전의 Hive와 함께 Amazon EMR 사용하여 DynamoDB에 저장된 데이터에 대해 다음 작업을 수행할 수 있습니다.
-
DynamoDB 데이터를 Hadoop 분산 파일 시스템(HDFS)에 로드한 후 Amazon EMR 클러스터에 대한 입력으로 사용.
-
유사 SQL 문(HiveQL)을 사용하여 실시간 DynamoDB 데이터 쿼리.
-
DynamoDB에 저장된 데이터 조인 및 내보내기 또는 조인된 데이터 쿼리.
-
DynamoDB에 저장된 데이터를 Amazon S3로 내보내기.
-
Amazon S3에서 DynamoDB로 데이터 가져오기.
참고
Amazon EMR-DynamoDB 커넥터는 Kerberos 인증을 사용하도록 구성된 클러스터를 지원하지 않습니다.
다음 각 작업을 수행하려면 먼저 Amazon EMR 클러스터를 시작하고 DynamoDB에서 데이터 위치를 지정한 다음, Hive 명령을 실행하여 DynamoDB에 저장된 데이터를 조작합니다.
여러 가지 방법으로 Amazon EMR 클러스터를 시작할 수 있습니다. Amazon EMR 콘솔, 명령줄 인터페이스(CLI)를 사용하거나, AWS SDK 또는 Amazon EMR API를 사용하여 클러스터를 프로그래밍할 수 있습니다. 그 밖에 Hive 클러스터를 대화식으로 실행할지, 아니면 스크립트에서 실행할지 선택할 수도 있습니다. 이 섹션에서는 Amazon EMR 콘솔과 CLI를 사용하여 대화형 Hive 클러스터를 시작하는 방법에 대해 살펴보겠습니다.
대화식 Hive 사용은 쿼리 성능을 테스트하고 애플리케이션을 조정하는 데 효과적인 방법입니다. 정기적으로 실행할 Hive 명령 세트를 설정한 후 Amazon EMR에서 자동으로 실행할 수 있는 Hive 스크립트를 생성할 수 있습니다.
주의
DynamoDB 테이블에서 Amazon EMR 읽기 또는 쓰기 작업은 구성된 프로비저닝된 처리량을 소모하여 프로비저닝된 처리량 예외의 발생 주기가 늘어날 가능성이 큽니다. 그래서 Amazon EMR은 대용량 요청을 대비해 지수 백오프 알고리즘을 통한 재시도를 구현함으로써 DynamoDB 테이블에 대한 요청 로드를 관리합니다. Amazon EMR 작업을 다른 트래픽과 동시에 실행하면 할당된 프로비저닝된 처리량 수준을 초과할 수 있습니다. Amazon CloudWatch의 ThrottleRequests 지표를 확인하여 이 상태를 모니터링할 수 있습니다. 요청 로드가 너무 높으면 클러스터를 다시 시작한 후 읽기 비율 설정 또는 쓰기 비율 설정을 더 낮은 값으로 설정하여 Amazon EMR 작업을 조절할 수 있습니다. DynamoDB 처리량 설정에 대한 자세한 내용은 프로비저닝된 처리량을 참조하세요.
테이블이 온디맨드 모드로 구성된 경우 내보내기 또는 가져오기 작업을 실행하기 전에 테이블을 프로비저닝된 모드로 다시 변경해야 합니다. DynamoDB 테이블에서 사용할 리소스를 계산하려면 파이프라인에 처리량 비율이 필요합니다. 온디맨드 모드는 프로비저닝된 처리량을 제거합니다. 처리량 용량을 프로비저닝하려는 경우 Amazon CloudWatch Events 지표를 사용하여 테이블에서 사용하는 총 처리량을 평가할 수 있습니다.