외부 MySQL 데이터베이스 또는 Amazon Aurora 사용 - Amazon EMR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

외부 MySQL 데이터베이스 또는 Amazon Aurora 사용

외부 MySQL 데이터베이스 또는 Amazon Aurora를 Hive 메타스토어로 사용하려면 Amazon RDS MySQL 인스턴스 또는 Amazon Aurora PostgreSQLinstance 인스턴스에 외부 데이터베이스 위치를 지정하도록 Hive의 메타스토어에 대한 기본 구성 값을 재정의합니다.

참고

Hive는 메타스토어 테이블에 대한 동시 쓰기 액세스를 지원하지 않으며 금지하지도 않습니다. 두 클러스터 간에 메타스토어 정보를 공유하는 경우, 동일한 메타스토어 테이블의 다른 파티션에 쓰고 있지 않은 한, 동시에 동일한 메타스토어 테이블에 쓰지 않는지 확인해야 합니다.

다음 절차에서는 Hive 메타스토어 위치에 대한 기본 구성 값을 재정의하고 재구성된 메타스토어 위치를 사용하여 클러스터를 시작하는 방법을 보여 줍니다.

EMR 클러스터 외부에 위치한 메타스토어를 생성하려면
  1. MySQL 또는 Aurora PostgreSQL 데이터베이스를 생성합니다. PostgreSQL을 사용하는 경우 클러스터를 프로비저닝한 후에 구성해야 합니다. 클러스터 생성 시 MySQL만 지원됩니다. Aurora MySQL 및 Aurora PostgreSQL 간 차이점에 대한 자세한 내용은 Amazon Aurora MySQL의 개요Amazon Aurora PostgreSQL 작업을 참조하세요. 일반적으로 Amazon RDS 데이터베이스를 생성하는 방법에 대한 자세한 내용은 https://aws.amazon.com/rds/를 참조하세요.

  2. 데이터베이스와 -Master 보안 그룹 간의 JDBC 연결을 허용하도록 보안 그룹을 수정하십시오. ElasticMapReduce 액세스를 위한 보안 그룹을 수정하는 방법에 대한 자세한 내용은 Amazon EMR 관리형 보안 그룹 작업을 참조하세요.

  3. hive-site.xml에서 JDBC 구성 값을 설정합니다.

    중요

    암호와 같은 중요한 정보를 Amazon EMR 구성 API에 제공하면 해당 정보가 충분한 권한이 있는 계정에 표시됩니다. 이 정보가 다른 사용자에게 표시될 수 있다고 우려되는 경우 관리 계정으로 클러스터를 생성하고 elasticmapreduce:DescribeCluster API 키에 대한 권한을 명시적으로 거부하는 역할을 생성하여 다른 사용자(IAM 사용자 또는 위임된 자격 증명이 있는 사용자)를 클러스터의 서비스 액세스로 제한합니다.

    1. 다음 예제에 표시된 대로 hiveConfiguration.json에 대한 편집 내용이 포함된 hive-site.xml이라는 구성 파일을 생성합니다.

      hostname을 데이터베이스를 실행하는 Amazon RDS 인스턴스의 DNS 주소로 바꾸고 usernamepassword를 데이터베이스의 보안 인증으로 바꿉니다. MySQL 및 Aurora 데이터베이스 인스턴스에 연결하는 방법에 대한 자세한 내용은 Amazon RDS 사용 설명서에서 MySQL 데이터베이스 엔진을 실행하는 DB 인스턴스에 연결Athena DB 클러스터에 연결을 참조하세요. javax.jdo.option.ConnectionURL은 JDBC 메타스토어의 JDBC 연결 문자열이고, javax.jdo.option.ConnectionDriverName은 JDBC 메타스토어의 드라이버 클래스 이름입니다.

      MySQL JDBC 드라이버는 Amazon EMR에 의해 설치됩니다.

      값 속성에 공백이나 캐리지 리턴을 포함할 수 없습니다. 속성은 모두 한 줄에 나타나야 합니다.

      [ { "Classification": "hive-site", "Properties": { "javax.jdo.option.ConnectionURL": "jdbc:mysql://hostname:3306/hive?createDatabaseIfNotExist=true", "javax.jdo.option.ConnectionDriverName": "org.mariadb.jdbc.Driver", "javax.jdo.option.ConnectionUserName": "username", "javax.jdo.option.ConnectionPassword": "password" } } ]
    2. 다음 명령과 같이 클러스터를 생성할 때 hiveConfiguration.json 파일을 참조하십시오. AWS CLI 이 명령에서 파일은 로컬로 저장되며, 파일을 Amazon S3에 업로드하고 여기에서 참조할 수도 있습니다(예: s3://DOC-EXAMPLE-BUCKET/hiveConfiguration.json).

      참고

      가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.

      aws emr create-cluster --release-label emr-7.1.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=Hive --configurations file://hiveConfiguration.json --use-default-roles
  4. 클러스터의 프라이머리 노드에 연결합니다.

    SSH를 사용하여 프라이머리 노드에 연결하는 방법에 대한 자세한 내용은 Amazon EMR 관리 안내서에서 SSH를 사용하여 프라이머리 노드에 연결을 참조하세요.

  5. 다음과 같은 명령을 입력하여 Amazon S3의 위치를 지정하는 Hive 테이블을 생성합니다.

    CREATE EXTERNAL TABLE IF NOT EXISTS table_name ( key int, value int ) LOCATION s3://DOC-EXAMPLE-BUCKET/hdfs/
  6. 실행 중인 클러스터에 Hive 스크립트를 추가합니다.

Hive 클러스터는 Amazon RDS에 위치한 메타스토어를 사용하여 실행됩니다. 메타스토어 위치를 지정하여 이 메타스토어를 공유하는 모든 추가 Hive 클러스터를 시작합니다.