Hudi 작동 방식 - 아마존 EMR

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

Hudi 작동 방식

Amazon에서 EMR Hudi를 사용하는 경우 Spark 데이터 소스 API 또는 Hudi 유틸리티를 사용하여 데이터 세트에 데이터를 쓸 수 있습니다. DeltaStreamer Hudi는 데이터 세트를 기존 Hive 테이블과 유사한 basepath 아래 파티셔닝된 디렉터리 구조로 구성합니다. 데이터가 이러한 디렉터리의 파일로 배치되는 방법에 대한 세부 사항은 선택한 데이터 세트 유형에 따라 다릅니다. CoW(쓸 때 복사) 또는 MoR(읽을 때 병합) 중 하나를 선택할 수 있습니다.

데이터 세트 유형에 상관없이 데이터 세트의 각 파티션은 basepath와(과) 관련된 partitionpath에 의해 고유하게 식별됩니다. 각 파티션 내에서 레코드는 여러 데이터 파일로 배포됩니다. 자세한 내용은 Apache Hudi 설명서의 파일 관리를 참조하십시오.

Hudi의 각 작업에는 해당하는 커밋이 있으며, 이 커밋은 일정하게 증가하는 타임스탬프(인스턴트라고도 함)로 식별됩니다. Hudi는 데이터 세트에서 수행된 일련의 모든 작업을 타임라인으로 유지합니다. Hudi는 타임라인을 통해 리더와 라이터 간 스냅샷 격리를 제공하고 이전 시점으로 롤백할 수 있도록 합니다. Hudi 레코드 및 작업 상태에 대한 자세한 내용은 Apache Hudi 설명서에서 Timeline을 참조하세요.

데이터 세트 스토리지 유형 이해: 쓸 때 복사 및 읽을 때 병합

Hudi 데이터 세트를 만들 때 데이터 세트를 쓸 때 복사 또는 읽을 때 병합으로 지정합니다.

  • 쓸 때 복사(CoW) - 데이터가 열 기반 형식(Parquet)으로 저장되며, 각 업데이트마다 쓰기 중에 새 버전의 파일을 만듭니다. CoW가 기본 스토리지 유형입니다.

  • 읽을 때 병합(MoR) - 데이터가 열 기반 형식(Parquet)과 행 기반(Avro) 형식을 조합하여 저장됩니다. 업데이트는 행 기반 delta 파일에 기록되며 새 버전의 열 형식 파일을 작성할 때 필요에 따라 압축됩니다.

CoW 데이터 세트를 사용하면 레코드에 대한 업데이트가 있을 때마다 레코드가 포함된 파일이 업데이트된 값으로 다시 작성됩니다. MoR 데이터 세트를 사용하면 Hudi는 업데이트가 있을 때마다 변경된 레코드에 대한 행만 씁니다. MoR은 읽기 수행이 적고 쓰기 또는 변경이 많은 워크로드에 더 적합합니다. CoW는 자주 변경되지 않는 데이터에서 읽기 수행이 많은 워크로드에 더 적합합니다.

Hudi는 데이터에 액세스하기 위한 세 가지 논리 뷰를 제공합니다:

  • 읽기 최적화 보기 - CoW 테이블의 최신 커밋된 데이터 세트와 MoR 테이블의 최신 압축 데이터 세트를 제공합니다.

  • 증분 보기 — CoW 데이터세트에서 두 작업 사이의 변경 스트림을 제공하여 다운스트림 작업을 제공하고 추출, 변환, 로드 () ETL 워크플로를 제공합니다.

  • 실시간 보기 - 열 및 행 기반 파일을 인라인으로 병합하여 MoR 테이블에서 커밋된 최신 데이터를 제공합니다.

읽기 최적화 뷰를 쿼리하면 쿼리는 압축된 모든 데이터를 반환하지만 최신 델타 커밋은 포함하지 않습니다. 이러한 데이터를 쿼리하면 읽기 성능은 뛰어나지만 최신 데이터는 생략됩니다. 실시간 뷰를 쿼리하는 경우 Hudi는 읽을 때 압축된 데이터를 델타 커밋과 병합합니다. 최신 데이터는 쿼리할 수 있지만 병합의 컴퓨팅 오버헤드로 인해 쿼리 성능은 떨어집니다. 압축된 데이터 또는 실시간 데이터를 쿼리할 수 있으므로 쿼리할 때 성능과 유연성 중에서 선택할 수 있습니다.

스토리지 유형 간의 장단점에 대한 자세한 내용은 Apache Hudi 설명서에서 Storage types & views를 참조하세요.

Hudi는 MoR용 Hive 메타스토어에 테이블을 두 개 만듭니다. 즉, 사용자가 지정한 이름을 가진 테이블(읽기 최적화 보기)과 _rt가 추가된 동일한 이름을 가진 테이블(실시간 보기)입니다. 두 테이블을 모두 쿼리할 수 있습니다.

Hudi 데이터 세트를 메타스토어에 등록

Hive 메타스토어에 Hudi 테이블을 등록하면 다른 테이블과 마찬가지로 Hive, Spark SQL 또는 Presto를 사용하여 Hudi 테이블을 쿼리할 수 있습니다. 또한 AWS Glue 데이터 카탈로그를 메타스토어로 사용하도록 Hive 및 Spark를 구성하여 Hudi를 AWS Glue와 통합할 수 있습니다. MoR 테이블의 경우 Hudi는 메타스토어에 두 개의 테이블로 데이터 세트를 등록합니다. 즉, 사용자가 지정한 이름을 가진 테이블(읽기 최적화 보기)과 _rt가 추가된 동일한 이름을 가진 테이블(실시간 보기)입니다.

HIVE_SYNC_ENABLED_OPT_KEY 옵션을 "true"로 설정하고 다른 필수 속성을 제공하여 Hudi 데이터 세트를 만드는 데 Spark를 사용하는 경우 Hudi 테이블을 Hive 메타스토어에 등록합니다. 자세한 내용은 Hudi 데이터 세트 작업 단원을 참조하십시오. 또한 hive_sync_tool 명령줄 유틸리티를 사용하여 Hudi 데이터 세트를 메타스토어의 테이블로 별도로 등록할 수 있습니다.