(번역: Youngkyong Ko) Original Blog Post
이 블로그에서는 업그레이드하는 HMS 테이블의 종류에 따라 다양한 방법을 사용하여 Hive 메타스토어(HMS)* 테이블을 Unity Catalog(UC)로 원활하게 업그레이드하는 방법을 예시를 통해 설명합니다.
*참고: Hive 메타스토어는 기본 메타스토어나 외부 메타스토어, 심지어 AWS Glue 데이터 카탈로그일 수도 있습니다. 간단하게 설명하기 위해 이 문서 전체에서 "Hive 메타스토어"라는 용어를 사용했습니다.
자세한 내용을 살펴보기 전에 업그레이드를 위해 수행할 단계를 살펴보겠습니다.
Unity Catalog는 이제 세 클라우드 플랫폼(AWS, Azure, GCP) 모두에서 사용할 수 있으며, 다음과 같은 주요 기능을 통해 데이터의 보안과 거버넌스를 간소화합니다:
Unity Catalog(UC)에서 바로 사용할 수 있는 이 모든 풍부한 기능은 현재 Hive 메타스토어에서 쉽게 사용할 수 없으며, 이를 구축하려면 막대한 리소스가 필요합니다. 또한 레이크하우스 모니터링, 레이크하우스 페더레이션, LakehouseIQ와 같은 최신 데이터브릭스 기능의 대부분은(전부는 아니지만) UC를 기반으로 구축되고 관리되며 작동을 위한 전제 조건으로 UC가 필요하므로, 데이터 자산을 HMS에서 UC로 업그레이드하는 것이 지연되면 이러한 최신 제품 기능을 활용하지 못할 수 있습니다.
따라서 기존 Hive 메타스토어에 등록된 테이블을 UC 메타스토어로 쉽게 업그레이드하여 UC가 제공하는 다양한 기능을 모두 활용할 수 있게 하는 방법이 궁금하실 것입니다. 이 블로그에서는 HMS 테이블을 UC로 업그레이드할 때 고려해야 할 사항과 방법론을 예시와 함께 안내해 드리겠습니다.
이 섹션에서는 다음 섹션의 업그레이드 방법론에 대해 자세히 알아보기 전에 업그레이드 시 고려해야 할 사항을 검토합니다.
한가 지 고려사항은 Hive 메타스토어 테이블의 다양한 형태입니다. UC로 업그레이드할 수 있는 HMS 테이블은 아래 표에 표시된 각 파라미터들을 조합하여 생성되었을 수 있습니다. 예를 들어, DBFS 루트 위치를 사용한 CSV 관리형 테이블이거나, Amazon S3 위치를 사용한 Parquet 외부 테이블일 수 있습니다. 이 섹션에서는 다양한 테이블 형태를 만들 수 있는 파라미터에 대해 설명합니다.
Parameter |
Variation |
Table Identification Guide |
Table Type |
|
|
|
||
Data Storage Location |
|
|
DBFS Mounted Cloud Object Storage |
|
|
Directly specifying cloud storage Location (such as S3://, abfss:// or gs://) |
|
|
Table file format and interface |
File formats such as Delta, Parquet, Avro |
|
Interface such as Hive SerDe interface |
|
위와 같은 매개변수의 조합에 따라 업그레이드 방법이 달라질 수 있습니다. 자세한 내용은 아래의 업그레이드 방법 섹션에서 설명합니다.
Azure Databricks에서 HMS 테이블을 UC로 업그레이드하기 전에 고려해야 할 또 다른 사항이 있습니다:
AZURE Cloud의 경우 - 현재 Blob 스토리지(wasb) 또는 ADLS 1세대(adl)에 저장된 테이블을 ADLS 2세대(abfs)로 업그레이드해야 합니다. 그렇지 않으면 UC에서 지원되지 않는 Azure 클라우드 스토리지를 사용하려고 한다는 오류가 발생합니다.
Error example: Table is not eligible for an upgrade from Hive Metastore to Unity Catalog. Reason: Unsupported file system scheme wasbs.
업그레이드 과정을 시작하기 전에 아래 단계에 따라 스토리지 자격 증명(Storage Credential)과 외부 위치(External Location)를 만들어야 합니다.
이 섹션에서는 다양한 업그레이드 옵션을 매트릭스 형태로 보여 드립니다. 또한 다이어그램을 사용하여 업그레이드와 관련된 단계를 보여줍니다.
업그레이드 방법에는 SYNC(지원되는 시나리오의 경우)를 사용하거나 데이터 복제(SYNC가 지원되지 않는 경우)를 사용하는 두 가 지 기본 방법이 있습니다.
*참고 - HMS에 있는 Parquet 와 Delta 포맷의 테이블에서 데이터를 복사하고 UC로 업그레이드려면 deep clone을 사용하는 것이 좋습니다. 다른 파일 형식의 경우 Create Table As Select(CTAS)를 사용합니다.
아래 다이어그램에서는 각 방법에 대한 업그레이드 단계를 설명합니다. 업그레이드에 어떤 방법을 사용할지 이해하려면 아래의 업그레이드 매트릭스 섹션을 참조하세요.
다이어그램 1 - SYNC를 이용하여 HMS 테이블을 UC로 업그레이드(데이터 복제 없음)
다이어그램 설명:
다이어그램 2 - 데이터 복제를 이용하여 HMS 테이블을 UC로 업그레이드
다이어그램 설명:
아래 표는 HMS 테이블을 UC 테이블로 업그레이드할 수 있는 다양한 방법을 보여줍니다. 각 시나리오별로 업그레이드의 단계를 설명합니다.
DBFS 루트 스토리지를 이용하는 HMS 스토리지 포맷
Ex. |
HMS Table Type |
Description of HMS Table Type |
Example of HMS Table |
Target UC TableType |
Target UC Data File Format |
Upgrade Methodology |
---|---|---|---|---|---|---|
1 |
Managed |
관리형 테이블의 데이터 파일은 DBFS Root (데이터브릭스가 관리하는 HMS 데이터베이스의 기본 경로)에 위치 |
%sql create table if not exists hive_metastore.hmsdb_upgrade_db.people_parquet |
External Or Managed |
관리형과 외부 테이블 모두에 Delta 포맷이 권장됨. 외부 테이블은 non-delta file formats.1도 지원 |
CTAS or Deep Clone |
2 |
External |
외부 테이블의 데이터 파일이 DBFS Root 에 있음을 의미. 테이블 정의에 "Location" 구문이 있어 외부 테이블이 됨. |
%sql
|
External Or Managed |
관리형과 외부 테이블 모두에 Delta 포맷이 권장됨. 외부 테이블은 non-delta file formats.1도 지원 |
CTAS or Deep Clone |
1. Note - 가급적이면 CTAS로 업그레이드하는 동안 델타로 변경하는 것이 좋습니다.
HMS Hive SerDe table
Ex. |
H MS Table Type |
Description of HMS Table Type |
Example of HMS Table |
Target UC TableType |
Target UC Data File Format |
Upgrade Methodology |
---|---|---|---|---|---|---|
3 |
Hive SerDe External or Managed 2 |
Hive SerDe 인터페이스를 사용하여 만든 테이블입니다. 데이터브릭스에서의 Hive 테이블에 대해 자세히 알아보려면 이 link를 참조하세요. |
%sql
|
External Or Managed |
관리형과 외부 테이블 모두에 Delta 포맷이 권장됨. 외부 테이블은 non-delta file formats. 3 도 지원 |
CTAS or Deep Clone |
2. Note - 기본 스토리지 형식에 관계없이 hive SerDe는 동일한 업그레이드 경로를 따릅니다.
3. Note - 가급적이면 CTAS로 업그레이드하는 동안 델타로 변경하는 것이 좋습니다.
DBFS 마운트 스토리지를 사용하는 HMS 스토리지 포맷
Ex. |
HMS Table Type |
Description of HMS Table Type |
Example of HMS Table |
Target UC TableType |
Target UC Data File Format |
Upgrade Methodology |
---|---|---|---|---|---|---|
4 |
Managed |
상위 데이터베이스의 위치가 외부 경로(예: 오브젝트 스토어의 마운트된 경로)로 설정되어 있는 경우입니다. 테이블은 Location 절 없이 생성되며 테이블 데이터는 해당 기본 데이터베이스 경로 아래에 저장됩니다. |
%sql |
External |
HMS 소스 데이터 파일 포맷과 동일 |
|
5 |
Managed |
Managed |
Delta |
CTAS or Deep Clone |
||
6 |
External |
이 테이블은 Location 절과 클라우드 오브젝트 스토어에서 마운트된 경로를 사용하여 생성됩니다. |
%sql |
External |
HMS 소스 데이터 파일 포맷과 동일 |
|
7 |
External |
Managed |
Delta |
CTAS or Deep Clone |
4. 참고 - 외부 테이블로 변환한 후 HMS 테이블을 개별적으로 삭제해야 합니다. HMS 데이터베이스/스키마가 Location으로 정의된 경우 Cascade 옵션으로 데이터베이스를 삭제하면 기본 데이터가 손실되고 업그레이드된 UC 테이블의 데이터도 손실됩니다.
클라우드 오브젝트 스토리지를 사용하는 HML 스토리지 포맷
Ex. |
HMS Table Type |
Description of HMS Table Type |
Example of HMS Table |
Target UC TableType |
Target UC Data File Format |
Upgrade Methodology |
---|---|---|---|---|---|---|
8 |
Managed |
상위 데이터베이스의 Location이 외부 경로(예: 클라우드 객체 저장소)로 설정되어 있습니다. 테이블은 Location 절 없이 생성되며 테이블 데이터는 해당 기본 데이터베이스 경로 아래에 저장됩니다. |
%sql create database if not exists hive_metastore.hmsdb_upgrade_db location "s3://databricks-dkushari/hmsdb_upgrade_db/"; |
Extern al |
소스 데이터 파일 포맷과 동일 |
|
9 |
Managed |
Managed |
Delta |
CTAS or Deep Clone |
||
10 |
External |
이 테이블은 location 절과 클라우드 오브젝트 스토리지의 경로를 사용하여 생성됩니다. |
%sql |
External |
As of the source data file format |
|
11 |
External |
Managed |
Delta |
CTAS or Deep Clone |
이 섹션에서는 위에서 설명한 각 시나리오에 대한 예제가 포함된 데이터브릭스 노트북을 제공합니다.
이 블로그에서는 Hive 메타스토어 테이블을 Unity Catalog 메타스토어로 업그레이드하는 방법을 설명했습니다. Notebook을 참조하여 다양한 업그레이드 옵션을 시도해 보세요. 또한 Demo Center를 참조하여 업그레이드 프로세스 자동화를 시작할 수도 있습니다. HMS 테이블을 UC로 업그레이드하는 과정을 자동화하려면 이 Databricks Lab repository를 사용하는 것을 권장합니다.
여러분의 테이블을 Unity Catalog로 업그레이드하여 통합 거버넌스 기능을 활용하세요. UC로 업그레이드한 후 더 이상 필요하지 않은 경우 Hive 메타스토어 스키마 및 테이블을 삭제할 수 있습니다. 외부 테이블을 삭제해도 클라우드 계정의 데이터 파일은 수정되지 않습니다. 관리형 테이블 또는 관리형 테이블이 있는 스키마를 삭제할 때는 이 블로그에 설명된 대로 예방 조치를 취하세요.