

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

# Amazon EMR 4.x에서 Hive 사용 시 고려 사항
<a name="emr-Hive-4x"></a>

이 섹션에서는 Amazon EMR 5.x 릴리스 버전에서 Hive 2.x를 사용하는 것에 비해 Amazon EMR 4.x 릴리스 버전에서 Hive 버전 1.0.0을 사용할 때 고려할 차이점을 설명합니다.

## ACID 트랜잭션 지원되지 않음
<a name="emr-Hive-acid-4x"></a>

Amazon EMR 4.x 릴리스 버전의 Hive는 4.x 릴리스 버전을 사용할 때 Hive 데이터가 Amazon S3에 저장되어 ACID 트랜잭션이 지원되지 않습니다. Amazon S3에서 트랜잭션 테이블을 생성하려고 하면 예외가 발생합니다.

## Amazon S3에서 테이블에 대한 읽기 및 쓰기
<a name="emr-Hive-s3table-4x"></a>

Amazon EMR 4.x 릴리스 버전의 Hive는 임시 파일을 사용하지 않고 Amazon S3에 직접 쓸 수 있습니다. 이 기능으로 인해 성능이 향상되지만 같은 Hive 문에서 Amazon S3 내 동일한 테이블에 대한 읽기 및 쓰기 작업을 수행할 수 없습니다. HDFS에서 임시 테이블을 생성하여 사용하는 차선책이 있습니다.

다음 예제는 여러 Hive 문을 사용하여 Amazon S3에서 테이블을 업데이트하는 방법을 보여 줍니다. 이 명령문에서는 Amazon S3에 있는 `my_s3_table`이라는 테이블을 기반으로 HDFS에 `tmp`라는 임시 테이블을 생성합니다. 그러면 Amazon S3의 테이블이 임시 테이블 콘텐츠로 업데이트됩니다.

```
CREATE TEMPORARY TABLE tmp LIKE my_s3_table;
INSERT OVERWRITE TABLE tmp SELECT ....;
INSERT OVERWRITE TABLE my_s3_table SELECT * FROM tmp;
```

## Log4j 및 Log4j 2 비교
<a name="emr-Hive-log4j-4x"></a>

Amazon EMR 4.x 릴리스 버전의 Hive에 Log4j가 사용됩니다. 버전 5.0.0부터는 Log4j 2가 기본값입니다. 이 버전에서는 다른 로깅 구성이 필요할 수 있습니다. 자세한 내용은 [Apache Log4j 2](http://logging.apache.org/log4j/2.x/)를 참조하세요.

## MapReduce가 기본 실행 엔진임
<a name="emr-Hive-tez-4x"></a>

Amazon EMR 4.x 릴리스 버전의 Hive에서는 MapReduce를 기본 실행 엔진으로 사용합니다. Amazon EMR 버전 5.0.0부터는 대다수 워크플로에서 성능을 개선하는 Tez가 기본 실행 엔진입니다.

## Hive 권한 부여
<a name="emr-Hive-authz-4x"></a>

Amazon EMR 4.x 릴리스 버전의 Hive는 HDFS에 대해 [Hive 권한 부여](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization)를 지원하지만 EMRFS 및 Amazon S3에서는 지원하지 않습니다. Amazon EMR 클러스터는 기본적으로 권한 부여가 비활성화된 상태로 실행됩니다.

## Amazon S3와 Hive 파일 병합 동작
<a name="emr-Hive-filemerge-4x"></a>

Amazon EMR 4.x 릴리스 버전의 Hive는 `hive.merge.mapfiles`가 `true`일 경우 맵 전용 작업 끝에서 작은 파일을 병합합니다. 작업의 평균 출력 크기가 `hive.merge.smallfiles.avgsize` 설정보다 작아야 병합이 트리거됩니다. Amazon EMR Hive는 최종 출력 경로가 HDFS에 있는 경우 정확히 동일한 동작을 수행합니다. 하지만 출력 경로가 Amazon S3에 있으면 `hive.merge.smallfiles.avgsize` 파라미터가 무시됩니다. 이 상황에서 `hive.merge.mapfiles`가 `true`로 설정된 경우 병합 작업이 항상 트리거됩니다.