

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

# Amazon EMR의 이전 AMI 버전에 고유한 Hive 애플리케이션
<a name="emr-3x-hive"></a>

## 로그 파일
<a name="emr-3x-hive-log-files"></a>

Amazon EMR AMI 버전 2.x 및 3.x를 사용하면 Hive 로그가 `/mnt/var/log/apps/`에 저장됩니다. Hive의 동시 버전을 지원하려면 다음 표와 같이 실행하는 Hive 버전에 따라 로그 파일 이름이 결정됩니다.


| Hive 버전 | 로그 파일 이름 | 
| --- | --- | 
| 0.13.1 | hive.log  이 버전부터 Amazon EMR은 버전 관리 미사용 파일 이름(`hive.log`)을 사용합니다. 마이너 버전은 메이저 버전과 동일한 로그 위치를 공유합니다.  | 
| 0.11.0 | hive\$10110.log   Hive 0.11.0의 마이너 버전(예: 0.11.0.1)은 Hive 0.11.0과 동일한 로그 파일 위치를 공유합니다.  | 
| 0.8.1 | hive\$1081.log   Hive 0.8.1의 마이너 버전(예: 0.8.1.1)은 Hive 0.8.1과 동일한 로그 파일 위치를 공유합니다.  | 
| 0.7.1 | hive\$107\$11.log   Hive 0.7.1의 마이너 버전(예: Hive 0.7.1.3 및 Hive 0.7.1.4)은 Hive 0.7.1과 동일한 로그 파일 위치를 공유합니다.   | 
| 0.7 | hive\$107.log | 
| 0.5 | hive\$105.log | 
| 0.4 | hive.log | 

## 분할 입력 기능
<a name="emr-3x-hive-split-input"></a>

0.13.1 이전의 Hive 버전(3.11.0 이전의 Amazon EMR AMI 버전)을 사용하여 분할 입력 기능을 구현하려면 다음을 사용합니다.

```
hive> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveCombineSplitsInputFormat;
hive> set mapred.min.split.size=100000000;
```

이 기능은 Hive 0.13.1에서 더 이상 사용되지 않습니다. Amazon EMR AMI 버전 3.11.0에서 동일한 분할 입력 형식 기능을 사용하려면 다음을 사용합니다.

```
set hive.hadoop.supports.splittable.combineinputformat=true;
```

## Thrift 서비스 포트
<a name="emr-3x-hive-thrift-service"></a>

 Thrift는 나중에 분석할 수 있도록 데이터 구조를 유지하는 데 사용되는 압축된 이진 직렬화 형식을 정의하는 RPC 프레임워크입니다. 일반적으로 Hive는 다음 포트에서 작동하도록 서버를 구성합니다.


| Hive 버전 | 포트 번호 | 
| --- | --- | 
| Hive 0.13.1 | 10000 | 
| Hive 0.11.0 | 10004 | 
| Hive 0.8.1 | 10003 | 
| Hive 0.7.1 | 10002 | 
| Hive 0.7 | 10001 | 
| Hive 0.5 | 10000 | 

 Thrift 서비스에 대한 자세한 내용은 를 참조하세요[http://wiki.apache.org/thrift/](http://wiki.apache.org/thrift/) 

## Hive를 사용하여 파티션 복구
<a name="emr-3x-hive-recover-partition"></a>

Amazon EMR에는 Amazon S3에 있는 테이블 데이터에서 테이블의 파티션을 복구하는 Hive 쿼리 언어의 문이 포함되어 있습니다. 다음 예제는 이 작업을 보여 줍니다.

```
CREATE EXTERNAL TABLE (json string) raw_impression 
PARTITIONED BY (dt string) 
LOCATION 's3://elastic-mapreduce/samples/hive-ads/tables/impressions';
ALTER TABLE logs RECOVER PARTITIONS;
```

파티션 디렉터리 및 데이터가 테이블 정의에 지정된 위치에 있어야 하며 Hive 규칙에 따라 이름이 지정되어야 합니다. 예: `dt=2009-01-01`.

**참고**  
Hive 0.13.1 이후에는 이 기능이 `msck repair table`을 사용하여 기본적으로 지원되므로 `recover partitions`가 지원되지 않습니다. 자세한 내용은 [https://cwiki.apache.org/confluence/display/Hive/LanguageManual\$1DDL](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL)을 참조하세요.

## 스크립트에 Hive 변수 전달
<a name="emr-3x-hive-pass-variable"></a>

를 사용하여 Hive 단계에 변수를 전달하려면 다음 명령을 AWS CLI입력하고 *myKey*를 EC2 키 페어의 이름으로 바꾸고 *amzn-s3-demo-bucket*을 버킷 이름으로 바꿉니다. 이 예에서 `SAMPLE`은 앞에 `-d` 스위치가 붙는 변수 값입니다. 이 변수는 Hive 스크립트에서 `${SAMPLE}`로 정의됩니다.

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

```
aws emr create-cluster --name "Test cluster" --ami-version 3.9 \
--applications Name=Hue Name=Hive Name=Pig \
--use-default-roles --ec2-attributes KeyName=myKey \
--instance-type m3.xlarge --instance-count 3 \
--steps Type=Hive,Name="Hive Program",ActionOnFailure=CONTINUE,\
Args=[-f,s3://elasticmapreduce/samples/hive-ads/libs/response-time-stats.q,-d,\
INPUT=s3://elasticmapreduce/samples/hive-ads/tables,-d,OUTPUT=s3://amzn-s3-demo-bucket/hive-ads/output/,\
-d,SAMPLE=s3://elasticmapreduce/samples/hive-ads/]
```

## 외부 메타스토어 위치 지정
<a name="emr-3x-hive-external-metastore"></a>

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

**EMR 클러스터 외부에 위치한 메타스토어를 생성하려면**

1. Amazon RDS를 사용하여 MySQL 또는 Aurora 데이터베이스를 생성합니다.

   Amazon RDS 데이터베이스 생성 방법에 대한 자세한 내용은 [Amazon RDS 시작하기](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.html)를 참조하세요.

1. 데이터베이스와 **ElasticMapReduce-Master** 보안 그룹 간의 JDBC 연결을 허용하도록 보안 그룹을 수정합니다.

   액세스를 위해 보안 그룹을 수정하는 방법에 대한 자세한 내용은 *Amazon RDS 사용 설명서*에서 [Amazon RDS 보안 그룹](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html)을 참조하세요.

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

   1. 다음 사항이 포함된 `hive-site.xml` 구성 파일을 생성합니다.

      ```
      <configuration>
        <property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mariadb://hostname:3306/hive?createDatabaseIfNotExist=true</value>
          <description>JDBC connect string for a JDBC metastore</description>
        </property>
        <property>
          <name>javax.jdo.option.ConnectionUserName</name>
          <value>hive</value>
          <description>Username to use against metastore database</description>
        </property>
        <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>password</value>
          <description>Password to use against metastore database</description>
        </property>
      </configuration>
      ```

      *hostname*은 데이터베이스를 실행하는 Amazon RDS 인스턴스의 DNS 주소입니다. *username* 및 *password*는 데이터베이스의 보안 인증입니다. MySQL 및 Aurora 데이터베이스 인스턴스에 연결하는 방법에 대한 자세한 내용은 *Amazon RDS 사용 설명서*에서 [MySQL 데이터베이스 엔진 기반 DB 인스턴스에 연결하기](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html) 및 [Aurora DB 클러스터에 연결](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Connecting.html)을 참조하세요.

      JDBC 드라이버는 Amazon EMR에서 설치됩니다.
**참고**  
값 속성에는 공백이나 캐리지 리턴이 포함되어서는 안 됩니다. 속성은 모두 한 줄에 나타나야 합니다.

   1. `hive-site.xml` 파일을 Amazon S3 위의 한 위치로 이동합니다(예: `s3://amzn-s3-demo-bucket/hive-site.xml`).

1. 클러스터를 생성하고 사용자 지정된 `hive-site.xml` 파일의 Amazon S3 위치를 지정합니다.

   다음 예제 명령은이 작업을 수행하는 AWS CLI 명령을 보여줍니다.
**참고**  
가독성을 위해 Linux 줄 연속 문자(\$1)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.

   ```
   aws emr create-cluster --name "Test cluster" --ami-version 3.10 \
   --applications Name=Hue Name=Hive Name=Pig \
   --use-default-roles --ec2-attributes KeyName=myKey \
   --instance-type m3.xlarge --instance-count 3 \
   --bootstrap-actions Name="Install Hive Site Configuration",\
   Path="s3://region.elasticmapreduce/libs/hive/hive-script",\
   Args=["--base-path","s3://elasticmapreduce/libs/hive","--install-hive-site",\
   "--hive-site=s3://amzn-s3-demo-bucket/hive-site.xml","--hive-versions","latest"]
   ```

## JDBC를 사용하여 Hive에 연결
<a name="emr-3x-hive-jdbc"></a>

JDBC를 통해 Hive에 연결하려면 JDBC 드라이버를 다운로드하고 SQL 클라이언트를 설치해야 합니다. 다음 예제에서는 SQL Workbench/J에서 JDBC를 사용하여 Hive에 연결하는 방법을 보여 줍니다.

**JDBC 드라이버를 다운로드하려면**

1. 액세스하려는 Hive 버전에 적합한 드라이버를 다운로드하고 압축을 풉니다. Hive 버전은 Amazon EMR 클러스터를 생성할 때 선택하는 AMI에 따라 다릅니다.
   + Hive 0.13.1 JDBC 드라이버: [https://amazon-odbc-jdbc-drivers.s3.amazonaws.com/public/AmazonHiveJDBC\$11.0.4.1004.zip](https://amazon-odbc-jdbc-drivers.s3.amazonaws.com/public/AmazonHiveJDBC_1.0.4.1004.zip)
   + Hive 0.11.0 JDBC 드라이버: [https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.11.0](https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.11.0)
   + Hive 0.8.1 JDBC 드라이버: [https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.8.1](https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.8.1)

1. 자세한 내용은 SQL Workbench/J 사용 설명서에서 [Installing and starting SQL Workbench/J](http://www.sql-workbench.net/manual/install.html)를 참조하세요.

1. 클러스터 마스터 노드에 대한 SSH 터널을 생성합니다. 연결용 포트는 Hive 버전에 따라 달라집니다. 예제 명령은 Linux `ssh` 사용자의 경우 아래 표에, Windows 사용자의 경우 PuTTY 명령에 제공됩니다.  
**Linux SSH 명령**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ReleaseGuide/emr-3x-hive.html)  
**Windows PuTTY 터널 설정**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ReleaseGuide/emr-3x-hive.html)

1. JDBC 드라이버를 SQL Workbench에 추가합니다.

   1. **Select Connection Profile(연결 프로필 선택)** 대화 상자에서 **Manage Drivers(드라이버 관리)**를 선택합니다.

   1. **Create a new entry(새 항목 생성)**(빈 페이지) 아이콘을 선택합니다.

   1. **Name(이름)** 필드에 **Hive JDBC**을(를) 입력합니다.

   1. **라이브러리**에서 **Select the JAR file(s)(JAR 파일 선택)** 아이콘을 클릭합니다.

   1. 다음 표에 표시된 대로 JAR 파일을 선택합니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ReleaseGuide/emr-3x-hive.html)

   1. **Please select one driver(드라이버 하나를 선택하세요)** 대화 상자에서 다음 표에 해당하는 드라이버를 선택하고 **확인**을 클릭합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ReleaseGuide/emr-3x-hive.html)

1. **연결 프로파일 선택** 대화 상자로 돌아가서 **드라이버** 필드가 **Hive JDBC**로 설정되어 있는지 확인하고 다음 표에 따라 **URL** 필드에 JDBC 연결 문자열을 제공합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ReleaseGuide/emr-3x-hive.html)

   클러스터가 AMI 버전 3.3.1 이상을 사용하는 경우 **연결 프로파일 선택** 대화 상자에서 **사용자 이름** 필드에 **hadoop**을 입력합니다.