

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

# Hive용 외부 메타스토어 구성
<a name="emr-metastore-external-hive"></a>

Hive는 기본적으로 프라이머리 노드의 파일 시스템에 위치한 MySQL 데이터베이스에 메타스토어 정보를 기록합니다. 메타스토어에는 파티션 이름, 데이터 유형 등을 포함하여 테이블과 테이블의 기반이 되는 기본 데이터에 대한 설명이 포함되어 있습니다. 클러스터가 종료되면 프라이머리 노드를 포함하여 모든 클러스터 노드가 종료됩니다. 이 경우 노드 파일 시스템에서 휘발성 스토리지를 사용하므로 로컬 데이터가 손실됩니다. 메타스토어를 유지해야 하는 경우 클러스터 외부에 존재하는 *외부 메타스토어*를 생성해야 합니다.

외부 메타스토어에 대한 두 가지 옵션이 있습니다.
+ AWS Glue Data Catalog(Amazon EMR 릴리스 5.8.0 이상만 해당).

  자세한 내용은 [Glue 데이터 카탈로그를 Hive의 AWS 메타스토어로 사용](emr-hive-metastore-glue.md) 단원을 참조하십시오.
+ Amazon RDS 또는 Amazon Aurora.

  자세한 내용은 [외부 MySQL 데이터베이스 또는 Amazon Aurora 사용](emr-hive-metastore-external.md) 단원을 참조하십시오.

**참고**  
Hive 3을 사용 중인데 Hive 메타스토어에 너무 많이 연결되면 `datanucleus.connectionPool.maxPoolSize` 파라미터를 더 작은 값으로 구성하거나 데이터베이스 서버가 처리할 수 있는 연결 수를 늘립니다. 연결 수가 증가한 이유는 Hive가 최대 JDBC 연결 수를 계산하는 방식 때문입니다. 최적의 성능 값을 계산하려면 [Hive Configuration Properties](https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-datanucleus.connectionPool.maxPoolSize.1)를 참조하세요.

# Glue 데이터 카탈로그를 Hive의 AWS 메타스토어로 사용
<a name="emr-hive-metastore-glue"></a>

Amazon EMR 릴리스 5.8.0 이상을 사용하면 Glue 데이터 카탈로그를 AWS 메타스토어로 사용하도록 Hive를 구성할 수 있습니다. 영구 메타스토어가 필요하거나 여러 클러스터, 서비스, 애플리케이션 또는 AWS 계정에서 메타스토어를 공유해야 하는 경우에 이 구성을 사용하는 것이 좋습니다.

AWS Glue는 완전 관리형 추출, 변환 및 로드(ETL) 서비스로, 데이터를 분류하고 정리하고 보강하고 다양한 데이터 스토어 간에 안정적으로 이동할 수 있는 간단하고 비용 효율적입니다. Glue 데이터 카탈로그는 Amazon EMR뿐만 아니라 Amazon RDS, Amazon Redshift, Redshift Spectrum, Athena 및 Apache Hive AWS 메타스토어와 호환되는 모든 애플리케이션과 통합하여 다양한 데이터 소스 및 데이터 형식에 걸쳐 통합된 메타데이터 리포지토리를 제공합니다. AWS Glue 크롤러는 Amazon S3의 소스 데이터에서 스키마를 자동으로 추론하고 관련 메타데이터를 데이터 카탈로그에 저장할 수 있습니다. 데이터 카탈로그에 대한 자세한 내용은 [AWS Glue 개발자 안내서의 Glue 데이터 카탈로그 채우기를](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html) 참조하세요. *AWS * 

 AWS Glue에는 별도의 요금이 적용됩니다. 데이터 카탈로그의 메타데이터 저장 및 액세스에 대한 월별 요금, Glue ETL 작업 및 AWS 크롤러 런타임에 대해 분당 청구되는 시간당 요금, 프로비저닝된 각 개발 엔드포인트에 대해 분당 청구되는 시간당 요금이 있습니다. 데이터 카탈로그에는 최대 100만 개의 객체를 무료로 저장할 수 있습니다. 100만 개 이상의 객체를 저장하는 경우, 100만 이상의 객체 100,000개마다 1USD가 부과됩니다. 데이터 카탈로그의 객체로는 테이블, 파티션 또는 데이터베이스가 있습니다. 자세한 내용은 [Glue 요금](https://aws.amazon.com/glue/pricing)을 참조하세요.

**중요**  
2017년 8월 14일 이전에 Amazon Athena 또는 Amazon Redshift Spectrum을 사용하여 테이블을 생성한 경우 데이터베이스 및 테이블은 AWS Glue 데이터 카탈로그와 별도의 Athena 관리형 카탈로그에 저장됩니다. Amazon EMR을 이러한 테이블과 통합하려면 AWS Glue 데이터 카탈로그로 업그레이드해야 합니다. 자세한 내용은 *Amazon Athena 사용 설명서*[의 AWS Glue 데이터 카탈로그로 업그레이드를](https://docs.aws.amazon.com/athena/latest/ug/glue-upgrade.html) 참조하세요.

## Glue 데이터 카탈로그를 AWS 메타스토어로 지정
<a name="emr-hive-glue-configure"></a>

 AWS Management Console AWS CLI또는 Amazon EMR API를 사용하여 AWS Glue 데이터 카탈로그를 메타스토어로 지정할 수 있습니다. CLI 또는 API를 사용할 때 Hive에 대한 구성 분류를 사용하여 데이터 카탈로그를 지정합니다. 또한 Amazon EMR 5.16.0 이상에서는 구성 분류를 사용하여 다른에서 데이터 카탈로그를 지정할 수 있습니다 AWS 계정. 콘솔을 사용할 때 **고급 옵션** 또는 **빠른 옵션**을 사용하여 데이터 카탈로그를 지정할 수 있습니다.

------
#### [ Console ]

**콘솔을 사용하여 AWS Glue 데이터 카탈로그를 Hive 메타스토어로 지정하려면**

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) Amazon EMR 콘솔을 엽니다.

1. 왼쪽 탐색 창의 **EMR on EC2**에서 **클러스터**를 선택하고 **클러스터 생성**을 선택합니다.

1. **애플리케이션 번들**에서 **코어 Hadoop**, **HBase** 또는 **사용자 지정**을 선택합니다. 클러스터를 사용자 지정하는 경우 Hive 또는 HCatalog를 애플리케이션 중 하나로 선택해야 합니다.

1. **AWS Glue Data Catalog 설정**에서 **Hive 테이블 메타데이터에 사용** 확인란을 선택합니다.

1. 클러스터에 적용할 다른 옵션을 선택합니다.

1. 클러스터를 시작하려면 **클러스터 생성**을 선택합니다.

------
#### [ CLI ]

**를 사용하여 AWS Glue 데이터 카탈로그를 Hive 메타스토어로 지정하려면 AWS CLI**

 AWS CLI 및 EMR API를 사용하여 구성 분류를 지정하는 방법에 대한 자세한 내용은 섹션을 참조하세요[애플리케이션 구성](emr-configure-apps.md).
+ 다음 예에 표시된 대로 `hive-site` 구성 분류를 사용하여 `hive.metastore.client.factory.class`에 대한 값을 지정합니다.

  ```
  [
    {
      "Classification": "hive-site",
      "Properties": {
        "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory"
      }
    }
  ]
  ```

  EMR 릴리스 버전 5.28.0, 5.28.1, 5.29.0 또는 6.x에서 AWS Glue 데이터 카탈로그를 메타스토어로 사용하여 클러스터를 생성하는 경우를 `hive.metastore.schema.verification`로 설정합니다`false`. 이렇게 하면 Hive 및 HCatalog가 MySQL에 대한 메타스토어 스키마를 검증하는 것을 방지합니다. 이러한 구성이 없으면, Hive 또는 HCatalog에서 재구성한 후에 프라이머리 인스턴스 그룹이 일시 중지됩니다.

  ```
  [
    {
      "Classification": "hive-site",
      "Properties": {
        "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory",
        "hive.metastore.schema.verification": "false"
      }
    }
  ]
  ```

  EMR 릴리스 버전 5.28.0, 5.28.1 또는 5.29.0에 이미 클러스터가 있는 경우, 다음 정보를 사용하여 프라이머리 인스턴스 그룹 `hive.metastore.schema.verification`을 `false`로 설정할 수 있습니다.

  ```
     
      Classification = hive-site
      Property       = hive.metastore.schema.verification
      Value          = false
  ```

  다른 AWS 계정에서 데이터 카탈로그를 지정하려면 다음 예제와 같이 `hive.metastore.glue.catalogid` 속성을 추가합니다. `acct-id`를 데이터 카탈로그의 AWS 계정으로 바꿉니다.

  ```
  [
    {
      "Classification": "hive-site",
      "Properties": {
        "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory",
        "hive.metastore.schema.verification": "false",
        "hive.metastore.glue.catalogid": "acct-id"
      }
    }
  ]
  ```

------

## IAM 권한
<a name="emr-hive-glue-permissions"></a>

클러스터의 EC2 인스턴스 프로파일에는 AWS Glue 작업에 대한 IAM 권한이 있어야 합니다. 또한 AWS Glue Data Catalog 객체에 대한 암호화를 활성화하는 경우 역할은 암호화에 AWS KMS key 사용되는를 암호화, 복호화 및 생성할 수 있어야 합니다.

### AWS Glue 작업에 대한 권한
<a name="emr-hive-glue-permissions-actions"></a>

Amazon EMR에 대한 기본 EC2 인스턴스 프로파일을 사용할 경우 어떤 작업도 필요하지 않습니다. 에 연결된 `AmazonElasticMapReduceforEC2Role` 관리형 정책은 필요한 모든 AWS Glue 작업을 `EMR_EC2_DefaultRole` 허용합니다. 그러나 사용자 지정 EC2 인스턴스 프로파일 및 권한을 지정하는 경우 적절한 AWS Glue 작업을 구성해야 합니다. `AmazonElasticMapReduceforEC2Role` 관리형 정책을 시작점으로 사용합니다. 자세한 내용은 *Amazon EMR 관리 안내서*에서 [클러스터 EC2 인스턴스의 서비스 역할(EC2 인스턴스 프로파일)](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html)을 참조하세요.

### AWS Glue 데이터 카탈로그 암호화 및 복호화 권한
<a name="emr-hive-glue-permissions-encrypt"></a>

인스턴스 프로파일에 키를 사용하여 데이터를 암호화하고 복호화할 수 있는 권한이 필요합니다. 다음 두 설명이 모두 적용되는 경우에는 이러한 권한을 구성할 필요가 *없습니다*.
+  AWS Glue용 관리형 키를 사용하여 AWS Glue Data Catalog 객체에 대한 암호화를 활성화합니다.
+ Glue 데이터 카탈로그 AWS 계정 와 동일한 AWS 에 있는 클러스터를 사용합니다.

그렇지 않으면 EC2 인스턴스 프로파일에 연결된 권한 정책에 다음 명령을 추가해야 합니다.

Glue 데이터 카탈로그 암호화에 대한 자세한 내용은 AWS *AWS Glue 개발자 안내서*의 [데이터 카탈로그 암호화를 참조하세요](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html).

### 리소스 기반 권한
<a name="emr-hive-glue-permissions-resource"></a>

Amazon EMR에서 AWS Glue를 Hive, Spark 또는 Presto와 함께 사용하는 경우 AWS Glue는 리소스 기반 정책을 지원하여 데이터 카탈로그 리소스에 대한 액세스를 제어합니다. 이러한 리소스에는 데이터베이스, 테이블, 연결 및 사용자 정의 기능이 포함됩니다. 자세한 내용은 *AWS Glue 개발자 안내서*에서 [AWS Glue 리소스 정책](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html)을 참조하세요.

리소스 기반 정책을 사용하여 Amazon EMR 내에서 AWS Glue에 대한 액세스를 제한하는 경우 권한 정책에서 지정하는 보안 주체는 클러스터 생성 시 지정된 EC2 인스턴스 프로파일과 연결된 역할 ARN이어야 합니다. 예를 들어, 카탈로그에 연결된 리소스 기반 정책의 경우 다음 예에 표시된 형식을 사용하여 클러스터 EC2 인스턴스에 대한 기본 서비스 역할의 ARN(*EMR\$1EC2\$1DefaultRole*)을 `Principal`로 지정할 수 있습니다.

```
arn:aws:iam::acct-id:role/EMR_EC2_DefaultRole
```

*acct-id*는 AWS Glue 계정 ID와 다를 수 있습니다. 그러면 다른 계정의 EMR 클러스터에서 액세스할 수 있습니다. 각각 다른 계정에서 여러 보안 주체를 지정할 수 있습니다.

## AWS Glue 데이터 카탈로그 사용 시 고려 사항
<a name="emr-hive-glue-considerations-hive"></a>

Glue 데이터 카탈로그를 Hive의 AWS 메타스토어로 사용할 때는 다음 항목을 고려하세요.
+ Hive 셸을 사용한 보조 JAR 추가는 지원되지 않습니다. 차선책으로, `hive-site` 구성 분류를 사용하여 `hive.aux.jars.path` 속성을 설정하면 Hive 클래스 경로에 보조 JAR이 추가됩니다.
+ [Hive 트랜잭션](https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions)은 지원되지 않습니다.
+  AWS Glue 내에서 테이블 이름을 바꾸는 것은 지원되지 않습니다.
+ `LOCATION`을 지정하지 않고 Hive 테이블을 생성하면 테이블 데이터가 `hive.metastore.warehouse.dir` 속성을 통해 지정된 위치에 저장됩니다. 기본적으로 HDFS에 있는 위치입니다. 다른 클러스터가 테이블에 액세스해야 하는 경우, 테이블을 생성한 클러스터에 대한 적절한 권한이 없으면 실패합니다. 또한 HDFS 스토리지는 일시적이기 때문에, 클러스터가 종료되는 경우 테이블 데이터가 손실되고 테이블을 다시 생성해야 합니다. Glue를 사용하여 Hive 테이블을 생성할 때 Amazon S3`LOCATION`에서 AWS 를 지정하는 것이 좋습니다. 또는 `hive-site` 구성 분류를 사용하여 모든 Hive 테이블에 적용되는 Amazon S3에서 `hive.metastore.warehouse.dir`에 대한 위치를 지정할 수도 있습니다. HDFS 위치에 테이블이 생성되고 테이블을 생성한 클러스터가 여전히 실행 중인 경우 AWS Glue 내에서 테이블 위치를 Amazon S3로 업데이트할 수 있습니다. 자세한 내용은 [Glue 개발자 안내서의 AWS Glue 콘솔에서 테이블 작업을 참조하세요](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html). *AWS * 
+ 따옴표와 아포스트로피가 포함된 파티션 값은 지원되지 않습니다(예: `PARTITION (owner="Doe's").`).
+ [열 통계](https://cwiki.apache.org/confluence/display/Hive/StatsDev#StatsDev-ColumnStatistics)는 emr-5.31.0 이상에서 지원됩니다.
+ [Hive 권한 부여](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization) 사용은 지원되지 않습니다. 대안으로 [AWS Glue 리소스 기반 정책](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html) 사용을 고려합니다. 자세한 내용은 [AWS Glue 데이터 카탈로그에 대한 Amazon EMR 액세스를 위한 리소스 기반 정책 사용을 참조하세요](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles-glue.html).
+ [Hive 제약](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Constraints)은 지원되지 않습니다.
+ [Hive의 비용 기반 최적화](https://cwiki.apache.org/confluence/display/Hive/Cost-based+optimization+in+Hive)는 지원되지 않습니다.
+ 설정 `hive.metastore.partition.inherit.table.properties`는 지원되지 않습니다.
+ 다음 메타스토어 상수 사용은 지원되지 않습니다. `BUCKET_COUNT, BUCKET_FIELD_NAME, DDL_TIME, FIELD_TO_DIMENSION, FILE_INPUT_FORMAT, FILE_OUTPUT_FORMAT, HIVE_FILTER_FIELD_LAST_ACCESS, HIVE_FILTER_FIELD_OWNER, HIVE_FILTER_FIELD_PARAMS, IS_ARCHIVED, META_TABLE_COLUMNS, META_TABLE_COLUMN_TYPES, META_TABLE_DB, META_TABLE_LOCATION, META_TABLE_NAME, META_TABLE_PARTITION_COLUMNS, META_TABLE_SERDE, META_TABLE_STORAGE, ORIGINAL_LOCATION`.
+ 조건자 표현식을 사용하는 경우에는 명시적 값이 비교 연산자 오른쪽에 와야 하며 그렇지 않으면 쿼리가 실패할 수 있습니다.
  + **올바름**: `SELECT * FROM mytable WHERE time > 11`
  + **잘못됨**: `SELECT * FROM mytable WHERE 11 > time`
+ Amazon EMR 버전 5.32.0 및 6.3.0 이상에서는 조건자 표현식에서 사용자 정의 함수(UDF) 사용을 지원합니다. 이전 버전을 사용하는 경우 Hive가 쿼리 실행을 최적화하려는 방식 때문에 쿼리가 실패할 수 있습니다.
+ [임시 테이블](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-TemporaryTables)은 지원되지 않습니다.
+  AWS Glue를 사용하여 직접 생성하는 대신 Amazon EMR을 통해 애플리케이션을 사용하여 테이블을 생성하는 것이 좋습니다. AWS Glue를 통해 테이블을 생성하면 필수 필드가 누락되고 쿼리 예외가 발생할 수 있습니다.
+ EMR 5.20.0 이상에서는 AWS Glue 데이터 카탈로그를 메타스토어로 사용할 때 Spark 및 Hive에 대해 병렬 파티션 정리가 자동으로 활성화됩니다. 이 변경 사항은 여러 요청을 병렬로 실행하여 파티션을 검색함으로써 쿼리 계획 시간을 크게 단축합니다. 동시에 실행할 수 있는 총 세그먼트 수는 1\$110입니다. 기본값은 5이며, 또한 권장 설정입니다. `hive-site` 구성 분류에서 `aws.glue.partition.num.segments` 속성을 지정하여 이 설정을 변경할 수 있습니다. 조절이 발생할 경우 값을 1로 변경하여 기능을 끌 수 있습니다. 자세한 내용은 [AWS Glue 그먼트 구조](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-partitions.html#aws-glue-api-catalog-partitions-Segment)를 참조하세요.

# 외부 MySQL 데이터베이스 또는 Amazon Aurora 사용
<a name="emr-hive-metastore-external"></a>

외부 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의 개요](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.Overview.html) 및 [Amazon Aurora PostgreSQL 작업](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)을 참조하세요. 일반적으로 Amazon RDS 데이터베이스를 생성하는 방법에 대한 자세한 내용은 [https://aws.amazon.com/rds/](https://aws.amazon.com/rds/)를 참조하세요.

1. 데이터베이스와 **ElasticMapReduce-Master** 보안 그룹 간의 JDBC 연결을 허용하도록 보안 그룹을 수정합니다. 액세스를 위한 보안 그룹을 수정하는 방법에 대한 자세한 내용은 [Amazon EMR 관리형 보안 그룹 작업](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-man-sec-groups.html)을 참조하세요.

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

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

       *hostname*을 데이터베이스를 실행하는 Amazon RDS 인스턴스의 DNS 주소로 바꾸고 *username* 및 *password*를 데이터베이스의 보안 인증으로 바꿉니다. MySQL 및 Aurora 데이터베이스 인스턴스에 연결하는 방법에 대한 자세한 내용은 *Amazon RDS 사용 설명서*에서 [MySQL 데이터베이스 엔진을 실행하는 DB 인스턴스에 연결](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html) 및 [Athena DB 클러스터에 연결](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Connect.html)을 참조하세요. `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"
            }
          }
        ]
      ```

   1. 다음 AWS CLI 명령과 같이 클러스터를 생성할 때 `hiveConfiguration.json` 파일을 참조합니다. 이 명령에서 파일은 로컬로 저장되며, 파일을 Amazon S3에 업로드하고 여기에서 참조할 수도 있습니다(예: `s3://DOC-EXAMPLE-BUCKET/hiveConfiguration.json`).
**참고**  
가독성을 위해 Linux 줄 연속 문자(\$1)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.

      ```
      aws emr create-cluster --release-label emr-7.12.0 --instance-type m5.xlarge --instance-count 2 \
      --applications Name=Hive --configurations file://hiveConfiguration.json --use-default-roles
      ```

1. 클러스터의 프라이머리 노드에 연결합니다.

   SSH를 사용하여 프라이머리 노드에 연결하는 방법에 대한 자세한 내용은 *Amazon EMR 관리 안내서*에서 [SSH를 사용하여 프라이머리 노드에 연결](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html)을 참조하세요.

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

   ```
   CREATE EXTERNAL TABLE IF NOT EXISTS table_name
   (
   key int,
   value int
   )
   LOCATION s3://DOC-EXAMPLE-BUCKET/hdfs/
   ```

1. 실행 중인 클러스터에 Hive 스크립트를 추가합니다.

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