기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Hive 작업
type
파라미터가 로 설정된 애플리케이션에서 Hive 작업을 실행할 수 있습니다HIVE
. 작업은 Amazon EMR 릴리스 버전과 호환되는 Hive 버전과 호환되어야 합니다. 예를 들어 Amazon EMR 릴리스 6.6.0을 사용하는 애플리케이션에서 작업을 실행할 때 작업은 Apache Hive 3.1.2와 호환되어야 합니다. 각 릴리스의 애플리케이션 버전에 대한 자세한 내용은 섹션을 참조하세요Amazon EMR Serverless 릴리스 버전.
Hive 작업 파라미터
StartJobRun
API 를 사용하여 Hive 작업을 실행할 때 다음 파라미터를 지정해야 합니다.
Hive 작업 런타임 역할
executionRoleArn
를 사용하여 애플리케이션이 Hive 작업을 실행하는 데 사용하는 IAM 역할에 ARN 대한 를 지정합니다. 이 역할에는 다음 권한이 포함되어야 합니다.
-
데이터가 있는 S3 버킷 또는 기타 데이터 소스에서 읽기
-
Hive 쿼리 파일 및 init 쿼리 파일이 있는 S3 버킷 또는 접두사에서 읽기
-
Hive Scratch 디렉터리와 Hive Metastore 웨어하우스 디렉터리가 있는 S3 버킷에 읽기 및 쓰기
-
최종 출력을 작성할 S3 버킷에 쓰기
-
를
S3MonitoringConfiguration
지정하는 S3 버킷 또는 접두사에 로그 쓰기 -
KMS 키를 사용하여 S3 버킷의 데이터를 암호화하는 경우 KMS 키에 대한 액세스
-
AWS Glue 데이터 카탈로그에 대한 액세스
Hive 작업이 다른 데이터 소스에서 데이터를 읽거나 쓰는 경우 이 IAM 역할에서 적절한 권한을 지정합니다. IAM 역할에 이러한 권한을 제공하지 않으면 작업이 실패할 수 있습니다. 자세한 내용은 Amazon EMR Serverless의 작업 런타임 역할 단원을 참조하십시오.
Hive 작업 드라이버 파라미터
jobDriver
를 사용하여 작업에 대한 입력을 제공합니다. 작업 드라이버 파라미터는 실행하려는 작업 유형에 대해 하나의 값만 허용합니다. 작업 유형hive
으로 를 지정하면 EMR Serverless는 Hive 쿼리를 jobDriver
파라미터에 전달합니다. Hive 작업의 파라미터는 다음과 같습니다.
-
query
- 실행하려는 Hive 쿼리 파일에 대한 Amazon S3의 참조입니다. -
parameters
- 재정의하려는 추가 Hive 구성 속성입니다. 속성을 재정의하려면 속성을 이 파라미터에 로 전달합니다--hiveconf
. 변수를 재정의하려면 변수를 이 파라미터에 로 전달합니다property=value
--hivevar
.key=value
-
initQueryFile
- init Hive 쿼리 파일입니다. Hive는 쿼리 전에 이 파일을 실행하고 이를 사용하여 테이블을 초기화할 수 있습니다.
Hive 구성 재정의 파라미터
모니터링 수준 및 애플리케이션 수준 구성 속성을 재정의configurationOverrides
하는 데 사용합니다. 이 파라미터는 다음 두 필드가 있는 JSON 객체를 허용합니다.
-
monitoringConfiguration
- 이 필드를 사용하여 EMR Serverless 작업이 Hive 작업의 로그를 저장할 Amazon S3URL(s3MonitoringConfiguration
)를 지정합니다. 애플리케이션을 호스팅 AWS 계정 하는 버킷과 작업이 실행되는 버킷을 동일하게 생성해야 AWS 리전 합니다. -
applicationConfiguration
- 이 필드에 구성 객체를 제공하여 애플리케이션의 기본 구성을 재정의할 수 있습니다. 간략 구문을 사용하여 구성을 제공하거나 JSON 파일에서 구성 객체를 참조할 수 있습니다. 구성 객체는 분류, 속성 및 선택적 중첩 구성으로 이루어져 있습니다. 속성은 해당 파일에서 재정의하려는 설정으로 구성됩니다. 단일 JSON 객체에서 여러 애플리케이션에 대해 여러 분류를 지정할 수 있습니다.참고
사용 가능한 구성 분류는 특정 EMR Serverless 릴리스에 따라 다릅니다. 예를 들어 사용자 지정 Log4j
spark-driver-log4j2
및 에 대한 분류spark-executor-log4j2
는 릴리스 6.8.0 이상에서만 사용할 수 있습니다.
애플리케이션 재정의 및 Hive 파라미터에서 동일한 구성을 전달하면 Hive 파라미터가 우선합니다. 다음 목록은 구성을 가장 높은 우선 순위에서 가장 낮은 우선 순위로 순위를 매깁니다.
-
를 사용하여 Hive 파라미터의 일부로 제공하는 구성입니다
--hiveconf
.property=value
-
애플리케이션의 일부로 제공하는 구성은 작업을 시작할 때 재정의됩니다.
-
애플리케이션을 생성할
runtimeConfiguration
때 의 일부로 제공하는 구성입니다. -
Amazon이 릴리스에 EMR 할당하는 최적화된 구성입니다.
-
애플리케이션에 대한 기본 오픈 소스 구성입니다.
애플리케이션 수준에서 구성을 선언하고 작업 실행 중에 구성을 재정의하는 방법에 대한 자세한 내용은 섹션을 참조하세요EMR Serverless에 대한 기본 애플리케이션 구성.
Hive 작업 속성
다음 표에는 Hive 작업을 제출할 때 구성해야 하는 필수 속성이 나열되어 있습니다.
설정 | 설명 |
---|---|
hive.exec.scratchdir |
EMR Serverless가 Hive 작업 실행 중에 임시 파일을 생성하는 Amazon S3 위치입니다. |
hive.metastore.warehouse.dir |
Hive의 관리형 테이블에 대한 데이터베이스의 Amazon S3 위치입니다. |
다음 표에는 선택적 Hive 속성과 Hive 작업을 제출할 때 재정의할 수 있는 기본값이 나와 있습니다.
설정 | 설명 | 기본값 |
---|---|---|
fs.s3.customAWSCredentialsProvider |
사용하려는 AWS 자격 증명 공급자입니다. | com.amazonaws.auth.DefaultAWSCredentialsProviderChain |
fs.s3a.aws.credentials.provider |
S3A 파일 시스템과 함께 사용할 AWS 자격 증명 공급자입니다. | com.amazonaws.auth.DefaultAWSCredentialsProviderChain |
hive.auto.convert.join |
입력 파일 크기에 따라 일반 조인을 맵조인으로 자동 변환하는 옵션입니다. | TRUE |
hive.auto.convert.join.noconditionaltask |
Hive가 입력 파일 크기에 따라 공통 조인을 맵조인으로 변환할 때 최적화를 켜는 옵션입니다. | TRUE |
hive.auto.convert.join.noconditionaltask.size |
조인은 이 크기 미만의 맵조인으로 직접 변환됩니다. | 최적의 값은 Tez 작업 메모리를 기반으로 계산됩니다. |
hive.cbo.enable |
Calcite 프레임워크를 사용하여 비용 기반 최적화를 활성화하는 옵션입니다. | TRUE |
hive.cli.tez.session.async |
Hive 쿼리가 컴파일되는 동안 배경 Tez 세션을 시작하는 옵션입니다. 로 설정하면 Hive 쿼리가 컴파일된 후 false Tez AM이 시작됩니다. |
TRUE |
hive.compute.query.using.stats |
Hive를 활성화하여 메타스토어에 저장된 통계로 특정 쿼리에 응답하는 옵션입니다. 기본 통계의 경우 를 hive.stats.autogather 로 설정합니다TRUE . 보다 고급 쿼리 모음을 위해 를 실행합니다analyze table queries . |
TRUE |
hive.default.fileformat |
CREATE TABLE 문의 기본 파일 형식입니다. CREATE TABLE 명령STORED AS [FORMAT] 에 를 지정하는 경우 이 값을 명시적으로 재정의할 수 있습니다. |
TEXTFILE |
hive.driver.cores |
Hive 드라이버 프로세스에 사용할 코어 수입니다. | 2 |
hive.driver.disk |
Hive 드라이버의 디스크 크기입니다. | 20G |
hive.driver.disk.type |
Hive 드라이버의 디스크 유형입니다. | 표준 |
hive.tez.disk.type |
Tez 작업자의 디스크 크기입니다. | 표준 |
hive.driver.memory |
Hive 드라이버 프로세스당 사용할 메모리의 양입니다. Hive CLI 및 Tez Application Master는 이 메모리를 헤드룸의 20%와 균등하게 공유합니다. | 6G |
hive.emr-serverless.launch.env.[ |
Hive 드라이버, Tez AM 및 Tez 작업과 같은 모든 Hive별 프로세스에서 환경 변수를 설정하는 옵션입니다. |
|
hive.exec.dynamic.partition |
DML/에서 동적 파티션을 켜는 옵션입니다DDL. | TRUE |
hive.exec.dynamic.partition.mode |
엄격한 모드 또는 비엄격 모드를 사용할지 여부를 지정하는 옵션입니다. 엄격한 모드에서는 실수로 모든 파티션을 덮어쓰는 경우를 대비하여 하나 이상의 정적 파티션을 지정해야 합니다. 비엄격 모드에서는 모든 파티션이 동적으로 허용됩니다. | strict |
hive.exec.max.dynamic.partitions |
Hive가 총 생성하는 최대 동적 파티션 수입니다. | 1000 |
hive.exec.max.dynamic.partitions.pernode |
Hive가 각 매퍼 및 리듀서 노드에서 생성하는 최대 동적 파티션 수입니다. | 100 |
hive.exec.orc.split.strategy |
다음 값 중 하나가 필요합니다. BI , ETL 또는 HYBRID . 이는 사용자 수준 구성이 아닙니다. BI 는 쿼리 실행이 아닌 분할 생성에 더 적은 시간을 소비하도록 지정합니다. ETL 는 분할 생성에 더 많은 시간을 소비하도록 지정합니다. HYBRID 는 휴리스틱을 기반으로 위의 전략 중 하나를 선택합니다. |
HYBRID |
hive.exec.reducers.bytes.per.reducer |
리듀서당 크기입니다. 기본값은 256MB입니다. 입력 크기가 1G 인 경우 작업은 4개의 감속기를 사용합니다. | 256000000 |
hive.exec.reducers.max |
최대 감소기 수입니다. | 256 |
hive.exec.stagingdir |
Hive가 테이블 위치 내부와 hive.exec.scratchdir 속성에 지정된 스크래치 디렉터리 위치에 생성하는 임시 파일을 저장하는 디렉터리의 이름입니다. |
.hive-staging |
hive.fetch.task.conversion |
NONE , MINIMAL 또는 값 중 하나가 필요합니다MORE . Hive는 선택한 쿼리를 단일 FETCH 작업으로 변환할 수 있습니다. 이렇게 하면 지연 시간이 최소화됩니다. |
MORE |
hive.groupby.position.alias |
Hive가 GROUP BY 문에서 열 위치 별칭을 사용하도록 하는 옵션입니다. |
FALSE |
hive.input.format |
기본 입력 형식입니다. 에 문제가 HiveInputFormat 발생하면 를 로 설정합니다CombineHiveInputFormat . |
org.apache.hadoop.hive.ql.io.CombineHiveInputFormat |
hive.log.explain.output |
Hive 로그의 쿼리에 대한 확장 출력에 대한 설명을 켜는 옵션입니다. | FALSE |
hive.log.level |
Hive 로깅 수준입니다. | INFO |
hive.mapred.reduce.tasks.speculative.execution |
감소기에 대한 투기 시작을 켜는 옵션입니다. Amazon EMR 6.10.x 이하에서만 지원됩니다. | TRUE |
hive.max-task-containers |
최대 동시 컨테이너 수입니다. 구성된 매퍼 메모리에 이 값을 곱하여 계산과 작업 선점에서 사용하는 사용 가능한 메모리를 결정합니다. | 1000 |
hive.merge.mapfiles |
맵 전용 작업이 끝날 때 작은 파일이 병합되는 옵션입니다. | TRUE |
hive.merge.size.per.task |
작업 종료 시 병합된 파일의 크기입니다. | 256000000 |
hive.merge.tezfiles |
Tez 의 끝에 있는 작은 파일 병합을 활성화하는 옵션입니다DAG. | FALSE |
hive.metastore.client.factory.class |
IMetaStoreClient 인터페이스를 구현하는 객체를 생성하는 공장 클래스의 이름입니다. |
com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory |
hive.metastore.glue.catalogid |
AWS Glue 데이터 카탈로그가 메타스토어 역할을 하지만 작업과 다른 AWS 계정 에서 실행되는 경우 작업이 실행 중인 AWS 계정 의 ID입니다. | NULL |
hive.metastore.uris |
메타스토어 클라이언트URI가 원격 메타스토어에 연결하는 데 사용하는 스리프트입니다. | NULL |
hive.optimize.ppd |
조건부 푸시다운을 켜는 옵션입니다. | TRUE |
hive.optimize.ppd.storage |
스토리지 핸들러에 대한 조건부 푸시다운을 켜는 옵션입니다. | TRUE |
hive.orderby.position.alias |
Hive가 ORDER BY 문에서 열 위치 별칭을 사용하도록 하는 옵션입니다. |
TRUE |
hive.prewarm.enabled |
Tez에 대한 컨테이너 예열을 켜는 옵션입니다. | FALSE |
hive.prewarm.numcontainers |
Tez에 대해 예열할 컨테이너 수입니다. | 10 |
hive.stats.autogather |
Hive가 INSERT OVERWRITE 명령 중에 기본 통계를 자동으로 수집하도록 하는 옵션입니다. |
TRUE |
hive.stats.fetch.column.stats |
메타스토어에서 열 통계 가져오기를 비활성화하는 옵션입니다. 열 수가 많으면 열 통계 가져오기 비용이 많이 들 수 있습니다. | FALSE |
hive.stats.gather.num.threads |
partialscan 및 noscan 분석 명령이 파티션된 테이블에 사용하는 스레드 수입니다. 이는 StatsProvidingRecordReader 를 구현하는 파일 형식(예: )에만 적용됩니다ORC. |
10 |
hive.strict.checks.cartesian.product |
엄격한 Cartesian 조인 검사를 활성화하는 옵션입니다. 이러한 검사는 Cartesian 제품(교차 조인)을 허용하지 않습니다. | FALSE |
hive.strict.checks.type.safety |
엄격한 유형 안전 검사를 켜고 string 및 bigint 와의 비교를 끄는 옵션입니다double . |
TRUE |
hive.support.quoted.identifiers |
NONE 또는 의 값을 예상합니다COLUMN . NONE 는 식별자에 영숫자와 밑줄 문자만 유효함을 나타냅니다. COLUMN 는 열 이름에 문자가 포함될 수 있음을 나타냅니다. |
COLUMN |
hive.tez.auto.reducer.parallelism |
Tez Auto-Rucer 병렬 처리 기능을 켜는 옵션입니다. Hive는 여전히 데이터 크기를 추정하고 병렬성 추정치를 설정합니다. Tez는 소스 꼭짓점의 출력 크기를 샘플링하고 필요에 따라 런타임 시 추정치를 조정합니다. | TRUE |
hive.tez.container.size |
Tez 작업 프로세스당 사용할 메모리의 양입니다. | 6144 |
hive.tez.cpu.vcores |
각 Tez 작업에 사용할 코어 수입니다. | 2 |
hive.tez.disk.size |
각 작업 컨테이너의 디스크 크기입니다. | 20G |
hive.tez.input.format |
Tez AM에서 분할 생성을 위한 입력 형식입니다. | org.apache.hadoop.hive.ql.io.HiveInputFormat |
hive.tez.min.partition.factor |
자동 축소기 병렬 처리를 활성화할 때 Tez가 지정하는 축소기의 하한입니다. | 0.25 |
hive.vectorized.execution.enabled |
벡터화된 쿼리 실행 모드를 켜는 옵션입니다. | TRUE |
hive.vectorized.execution.reduce.enabled |
쿼리 실행의 축소 측 벡터화 모드를 켜는 옵션입니다. | TRUE |
javax.jdo.option.ConnectionDriverName |
JDBC 메타스토어의 드라이버 클래스 이름입니다. | org.apache.derby.jdbc.EmbeddedDriver |
javax.jdo.option.ConnectionPassword |
메타스토어 데이터베이스와 연결된 암호입니다. | NULL |
javax.jdo.option.ConnectionURL |
JDBC 메타스토어의 JDBC 연결 문자열입니다. | jdbc:derby:;databaseName=metastore_db;create=true |
javax.jdo.option.ConnectionUserName |
메타스토어 데이터베이스와 연결된 사용자 이름입니다. | NULL |
mapreduce.input.fileinputformat.split.maxsize |
입력 형식이 인 경우 분할 계산 중 분할의 최대 크기입니다org.apache.hadoop.hive.ql.io.CombineHiveInputFormat . 값이 0이면 제한이 없음을 나타냅니다. |
0 |
tez.am.dag.cleanup.on.completion |
DAG 가 완료되면 셔플 데이터 정리를 활성화하는 옵션입니다. | TRUE |
tez.am.emr-serverless.launch.env.[ |
Tez AM 프로세스에서 환경 변수를 설정하는 옵션입니다. Tez AM의 경우 이 값은 hive.emr-serverless.launch.env.[ 값을 재정의합니다. |
|
tez.am.log.level |
EMR Serverless가 Tez 앱 마스터에 전달하는 루트 로깅 수준입니다. | INFO |
tez.am.sleep.time.before.exit.millis |
EMR Serverless는 AM 종료 요청 후 이 기간 이후에 ATS 이벤트를 푸시해야 합니다. | 0 |
tez.am.speculation.enabled |
느린 태스크의 투기적 시작을 유발하는 옵션입니다. 이렇게 하면 일부 태스크가 불량 또는 느린 머신으로 인해 느리게 실행될 때 작업 지연 시간을 줄이는 데 도움이 될 수 있습니다. Amazon EMR 6.10.x 이하에서만 지원됩니다. | FALSE |
tez.am.task.max.failed.attempts |
작업이 실패하기 전에 특정 작업에 대해 실패할 수 있는 최대 시도 횟수입니다. 이 수는 수동으로 종료된 시도 횟수를 계산하지 않습니다. | 3 |
tez.am.vertex.cleanup.height |
모든 종속 꼭짓점이 완료된 경우 Tez AM은 꼭짓점 셔플 데이터를 삭제합니다. 이 기능은 값이 0일 때 꺼집니다. Amazon EMR 버전 6.8.0 이상은 이 기능을 지원합니다. | 0 |
tez.client.asynchronous-stop |
EMR Serverless가 Hive 드라이버를 종료하기 전에 ATS 이벤트를 푸시하도록 하는 옵션입니다. | FALSE |
tez.grouping.max-size |
그룹화된 분할의 크기 상한(바이트)입니다. 이 제한은 지나치게 큰 분할을 방지합니다. | 1073741824 |
tez.grouping.min-size |
그룹화된 분할의 하위 크기 제한(바이트)입니다. 이 제한은 너무 많은 작은 분할을 방지합니다. | 16777216 |
tez.runtime.io.sort.mb |
Tez가 출력을 정렬할 때 소프트 버퍼의 크기가 정렬됩니다. | 최적의 값은 Tez 작업 메모리를 기반으로 계산됩니다. |
tez.runtime.unordered.output.buffer.size-mb |
Tez가 디스크에 직접 쓰지 않는 경우 사용할 버퍼의 크기입니다. | 최적의 값은 Tez 작업 메모리를 기반으로 계산됩니다. |
tez.shuffle-vertex-manager.max-src-fraction |
EMR Serverless가 현재 꼭짓점에 대한 모든 작업을 예약하기 전에 완료해야 하는 소스 작업의 비율입니다(ScatterGather 연결의 경우). 현재 꼭짓점에서 예약할 준비가 된 작업 수는 min-fraction 에서 사이로 선형으로 조정됩니다max-fraction . 기본값 또는 tez.shuffle-vertex-manager.min-src-fraction 중 큰 값이 기본값입니다. |
0.75 |
tez.shuffle-vertex-manager.min-src-fraction |
EMR Serverless가 현재 꼭짓점에 대한 작업을 예약하기 전에 완료해야 하는 소스 작업의 비율입니다(ScatterGather 연결의 경우). |
0.25 |
tez.task.emr-serverless.launch.env.[ |
Tez 작업 프로세스에서 환경 변수를 설정하는 옵션입니다. Tez 작업의 경우 이 값은 hive.emr-serverless.launch.env.[ 값을 재정의합니다. |
|
tez.task.log.level |
EMR Serverless가 Tez 작업에 전달하는 루트 로깅 수준입니다. | INFO |
tez.yarn.ats.event.flush.timeout.millis |
종료하기 전에 AM이 이벤트가 플러시될 때까지 기다려야 하는 최대 시간입니다. | 300000 |
Hive 작업 예제
다음 코드 예제는 StartJobRun
를 사용하여 Hive 쿼리를 실행하는 방법을 보여줍니다API.
aws emr-serverless start-job-run \ --application-id
application-id
\ --execution-role-arnjob-role-arn
\ --job-driver '{ "hive": { "query": "s3://amzn-s3-demo-bucket
/emr-serverless-hive/query/hive-query.ql", "parameters": "--hiveconf hive.log.explain.output=false" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "hive.exec.scratchdir": "s3://amzn-s3-demo-bucket
/emr-serverless-hive/hive/scratch", "hive.metastore.warehouse.dir": "s3://amzn-s3-demo-bucket
/emr-serverless-hive/hive/warehouse", "hive.driver.cores": "2", "hive.driver.memory": "4g", "hive.tez.container.size": "4096", "hive.tez.cpu.vcores": "1" } }] }'
EMR Serverless 샘플