Amazon EMR 4.x에서 Hive 사용 시 고려 사항 - 아마존 EMR

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

Amazon EMR 4.x에서 Hive 사용 시 고려 사항

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

ACID 트랜잭션 지원되지 않음

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

Amazon S3에서 테이블에 대한 읽기 및 쓰기

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 비교

Amazon EMR 4.x 릴리스 버전의 Hive에 Log4j가 사용됩니다. 버전 5.0.0부터는 Log4j 2가 기본값입니다. 이 버전에서는 다른 로깅 구성이 필요할 수 있습니다. 자세한 내용은 Apache Log4j 2를 참조하십시오.

MapReduce가 기본 실행 엔진임

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

Hive 권한 부여

Amazon EMR 4.x 릴리스 버전의 Hive는 HDFS에 대해 Hive 권한 부여를 지원하지만 EMRFS 및 Amazon S3에서는 지원하지 않습니다. Amazon EMR 클러스터는 기본적으로 권한 부여가 비활성화된 상태로 실행됩니다.

Amazon S3와 Hive 파일 병합 동작

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