Tez 구성 - 아마존 EMR

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

Tez 구성

tez-site 구성 분류를 통해 값을 설정하여 Tez를 사용자 지정할 수 있습니다. 이는 tez-site.xml 구성 파일의 설정을 구성합니다. 자세한 내용은 Apache Tez 설명서를 참조하십시오 TezConfiguration. Tez 실행 엔진을 사용하도록 Hive 또는 Pig를 변경하려면 hive-sitepig-properties 구성 분류를 적절하게 사용합니다. 예제는 아래에 나와 있습니다.

구성의 예

예제: Tez 루트 로깅 수준 사용자 지정과 Hive 및 Pig에 대한 실행 엔진으로 Tez 설정

아래에 표시된 예제 create-cluster 명령은 Tez, Hive 및 Pig가 설치된 클러스터를 생성합니다. 이 명령은 Amazon S3에 저장된 파일(myConfig.json)을 참조합니다. 이 파일은 hive-sitepig-properties 구성 분류를 사용하여 실행 엔진을 Pig 및 Hive에 대해 Tez를 설정하고 tez.am.log.levelDEBUG로 설정하는 tez-site 분류의 속성을 지정합니다.

참고

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

aws emr create-cluster --release-label emr-7.2.0 \ --applications Name=Tez Name=Hive Name=Pig --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge --instance-count 3 \ --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json --use-default-roles

다음은 myConfig.json의 콘텐츠 예제입니다.

[ { "Classification": "tez-site", "Properties": { "tez.am.log.level": "DEBUG" } }, { "Classification": "hive-site", "Properties": { "hive.execution.engine": "tez" } }, { "Classification": "pig-properties", "Properties": { "exectype": "tez" } } ]
참고

Amazon EMR 버전 5.21.0 이상에서는 클러스터 구성을 재정의하고 실행 중인 클러스터의 각 인스턴스 그룹에 대해 추가 구성 분류를 지정할 수 있습니다. Amazon EMR 콘솔, AWS Command Line Interface (AWS CLI) 또는 를 사용하여 이 작업을 수행할 수 AWS SDK 있습니다. 자세한 내용은 실행 중 클러스터의 인스턴스 그룹에 대해 구성 제공을 참조하십시오.

Tez 비동기 분할 열기

테이블 경로에 많은 수의 작은 파일이 있고 쿼리가 이를 모두 읽으려고 시도하는 경우 각 개별 분할에 대응되는 각 작은 파일은 하나의 Tez 그룹화된 분할 아래에 결합됩니다. 그 다음에는 단일 매퍼가 단일 Tez 그룹화된 분할을 처리합니다. 실행은 동기식이기 때문에 그룹화된 분할 아래의 각 개별 분할은 하나씩 처리됩니다. 이 작업을 하려면 RecordReader 객체가 분할을 동기적으로 처리해야 합니다.

명칭 분류 설명

tez.grouping.split.init.threads

tez-site

Tez가 RecordReaders를 사전 개시하고 분할을 여는 데 사용하는 대몬(daemon) 스레드 수를 지정합니다. ACID 테이블의 경우 tez.grouping.split.init.threads의 지원되는 최대값은 1입니다.

tez.grouping.split.init.recordreaders

tez-site

대몬(daemon) 스레드에서 사전 초기화한 상태로 유지할 RecordReaders의 개수를 지정합니다. 이는 Tez 그룹화된 분할에 InputSplits가 다량 포함되어 있을 때 도움이 될 수 있습니다. 해당 입력 RecordReaders 분할을 처리하기 위한 초기화는 순차적 처리 대신 대몬(daemon) 스레드를 사용하여 비동기적으로 수행할 수 있습니다.

Tez 비동기 분할 열기를 위한 벤치마킹

Tez 비동기 분할 열기 기능을 벤치마킹하기 위해 다음 환경 및 구성을 사용했습니다.

  • 벤치마크 환경 — 사용하는 기본 노드 1개와 코어 노드 16개를 사용하는 m5.16xlarge Amazon EMR 클러스터입니다. m5.16xlarge

  • 벤치마크 구성 – 단일 Tez 그룹화된 분할에 입력 분할이 많은 벤치마킹 시나리오를 시뮬레이션하기 위해 tez.grouping.split-count1로 설정합니다.

  • 벤치마킹을 위해 사용되는 표 - 테이블에는 파티션 200개가 포함되어 있고 각 파티션에는 단일 파일이 포함되어 있습니다. 벤치마크는 해당 테이블에 CSV 파일이 포함된 경우와 해당 테이블에 파켓 파일이 포함된 경우를 위해 수행됩니다. 벤치마킹을 위한 Hive 쿼리: 테이블의 SELECT COUNT(*)를 10회 수행하고 평균 런타임을 계산합니다.

  • Tez 비동기 분할 열기를 활성화하기 위한 구성 - 다음과 같습니다.

    • tez.grouping.split.init.threads = 4

    • tez.grouping.split.init.recordreaders = 10

데이터세트 기능 비활성화(기준) 기능 활성화 개선 사항

CSV 데이터 세트

90.26초

79.20초

12.25%

Parquet 데이터 세트

54.67초

42.23초

22.75%