이 문서에서는 Unity 카탈로그가 Hive 메타스토어에 저장된 테이블을 제어할 수 있도록 하는 기능인 Hive 메타스토어 페더레이션을 소개합니다. 외부 Hive 메타스토어 또는 레거시 내부 Azure Databricks Hive 메타스토어를 페더레이션할 수 있습니다.
Hive 메타스토어 페더레이션은 다음 사용 사례에 사용할 수 있습니다.
Unity 카탈로그로의 마이그레이션 경로의 한 단계로, 코드 적응 없이 증분 마이그레이션을 사용하도록 설정하고, 일부 워크로드는 다른 워크로드가 마이그레이션되는 동안 Hive 메타스토어에 등록된 데이터를 계속 사용합니다.
페더레이션된 내부 Hive 메타스토어는 읽기 및 쓰기 워크로드를 모두 허용하기 때문에 이 사용 사례는 현재 레거시 내부 Azure Databricks Hive 메타스토어를 사용하는 조직에 가장 적합합니다.
Unity 카탈로그에 등록된 데이터와 함께 Hive 메타스토어의 일부 데이터를 유지해야 하는 조직에 장기 하이브리드 모델을 제공합니다.
이러한 Hive 메타스토어의 외장 카탈로그는 읽기 전용이므로 이 사용 사례는 외부 Hive 메타스토어를 사용하는 조직에 가장 적합합니다.
Hive 연합을 소개하는 다이어그램
Hive 메타스토어 페더레이션 개요
ko-KR: Hive 메타스토어 연합에서 Azure Databricks 작업 영역과 Hive 메타스토어 간의 연결을 설정하고, Unity 카탈로그가 Hive 메타스토어를 크롤링하여 종종 연합된 카탈로그라고 부르는 외부 카탈로그를 채웁니다. 이를 통해 조직은 Unity 카탈로그에서 Hive 메타스토어 테이블을 사용하여 중앙 집중식 액세스 제어, 계보, 검색 등을 제공받을 수 있습니다.
Azure Databricks 작업 영역 외부에 있는 페더레이션된 Hive 메타스토어에서는 Unity 카탈로그를 사용하여 읽기를 허용합니다. 내부 Hive 메타스토어는 읽기 및 쓰기를 허용하며, 작성할 때 Hive 메타스토어 메타데이터와 Unity 카탈로그 메타데이터를 업데이트합니다.
페더레이션된 Hive 메타스토어에서 외세 테이블을 쿼리하는 경우 Unity 카탈로그는 액세스 제어 검사 및 감사와 같은 기능을 수행하는 거버넌스 계층을 제공하며, 쿼리는 Hive 메타스토어 의미 체계를 사용하여 실행됩니다. 예를 들어 사용자가 외국 카탈로그에 Parquet 형식으로 저장된 테이블을 쿼리하는 경우 다음을 수행합니다.
- Unity 카탈로그는 사용자가 테이블에 액세스할 수 있는지 확인하고 쿼리에 대한 계보를 유추합니다.
- 쿼리 자체는 기본 Hive 메타스토어에 대해 실행되며, 여기에 저장된 최신 메타데이터 및 파티션 정보를 활용합니다.
Hive 페더레이션 시나리오에서 HMS, Unity 카탈로그 및 Databricks 워크로드 간의 관계를 보여 주는 다이어그램
Hive 메타스토어 페더레이션은 Unity 카탈로그 외부 테이블 사용과 어떻게 비교됩니까?
Unity 카탈로그에는
두 테이블 형식에는 다음과 같은 속성이 있습니다.
- 클라우드 스토리지의 임의 위치를 테이블로 등록하는 데 사용할 수 있습니다.
- Unity 카탈로그 권한 및 세분화된 액세스 제어를 적용할 수 있습니다.
- 해당 쿼리를 참조하는 쿼리의 계보에서 볼 수 있습니다.
페더레이션된 Hive 메타스토어의 외세 테이블에는 다음과 같은 속성이 있습니다.
- Hive 메타스토어 크롤링에 따라 자동으로 검색됩니다. Hive 메타스토어에서 테이블이 만들어지는 즉시 테이블이 표시되고 Unity 카탈로그 외신 카탈로그에서 쿼리할 수 있습니다.
- Hive SerDes 및 파티션과 같은 Hive 의미 체계를 사용하여 테이블을 정의할 수 있습니다.
- 테이블이 외국 카탈로그의 다른 테이블과 겹치는 경로를 갖도록 허용합니다.
- 테이블이 DBFS 루트 위치에 배치되도록 허용합니다.
- Hive 메타스토어에 정의된 뷰를 포함합니다.
이와 같이, 페더레이션된 Hive 메타스토어의 외부 테이블은 Hive 메타스토어와의 하위 호환성을 제공하여 워크로드가 Hive 전용 의미 체계를 사용하면서도 Unity 카탈로그에서 제공하는 거버넌스를 이용할 수 있게 해줍니다.
그러나 일부 Unity 카탈로그 기능은 외장 테이블에서 사용할 수 없습니다. 예를 들면 다음과 같습니다.
- 예측 최적화와 같은 Unity 카탈로그 관리 테이블에만 사용할 수 있는 기능입니다.
- 벡터 검색, 델타 공유, 레이크하우스 모니터링 및 온라인 테이블.
- 기능 저장소 만들기, 모델 제공 만들기, 기능 사양 만들기, 모델 로깅 및 일괄 처리 채점을 비롯한 일부 기능 저장소 기능.
Hive 메타스토어와 Unity 카탈로그가 모두 외용 테이블의 쿼리 경로에 있기 때문에 성능은 Unity 카탈로그 또는 Hive 메타스토어의 워크로드보다 약간 더 나빠질 수 있습니다.
지원되는 기능에 대한 자세한 내용은 요구 사항 및 기능 지원을 참조하세요.
페더레이션된 Hive 메타스토어의 외국 카탈로그에 쓰는 것은 무엇을 의미하나요?
페더레이션된 내부 Hive 메타스토어에 대해서만 쓰기가 지원되며, 외부 Hive 메타스토어는 지원되지 않습니다.
페더레이션된 메타스토어에 대한 쓰기는 다음 두 가지 유형입니다.
CREATE TABLE
,ALTER TABLE
및DROP TABLE
같은 DDL 작업.DDL 작업은 기본 Hive 메타스토어에 동기적으로 반영됩니다. 예를 들어
CREATE TABLE
문을 실행하면 Hive 메타스토어와 외제 카탈로그 모두에서 테이블이 만들어집니다.경고
이는 또한
DROP
명령이 Hive 메타스토어에 반영됨을 의미합니다. 예를 들어, Hive 메타스토어가DROP SCHEMA mySchema CASCADE
를 지원하지 않기 때문에,UNDROP
옵션 없이UNDROP
이 기본 Hive 메타스토어 스키마의 모든 테이블을 삭제합니다.INSERT
,UPDATE
및DELETE
같은 DML 작업.또한 DML 작업은 기본 Hive 메타스토어 테이블에 동기적으로 반영됩니다. 예를 들어
INSERT INTO
실행하면 Hive 메타스토어의 테이블에 레코드가 추가됩니다.쓰기 지원은 Hive 메타스토어에서 Unity 카탈로그로 마이그레이션하는 동안 원활한 전환을 가능하게 하는 핵심입니다. Hive 메타스토어 페더레이션을 Unity 카탈로그로 마이그레이션할 때 어떻게 사용합니까?.
Hive 메타스토어 페더레이션을 설정하려면 어떻게 해야 하나요?
Hive 메타스토어 페더레이션을 설정하려면 다음을 수행합니다.
Unity 카탈로그에서 Hive 메타스토어에 액세스하기 위한 경로 및 자격 증명을 지정하는 연결을 만듭니다.
Hive 메타스토어 페더레이션은 이 연결을 사용하여 Hive 메타스토어를 크롤링합니다. 대부분의 데이터베이스 시스템에서는 사용자 이름과 암호를 제공합니다. 레거시 내부 Azure Databricks 작업 영역 Hive metastore에 연결하기 위해 Hive 메타스토어 페더레이션은 권한 부여를 처리합니다.
Hive 메타스토어에 등록된 테이블 경로용 Unity 카탈로그에서 스토리지 자격 증명 및 외부 위치를 만듭니다.
외부 위치에는 경로가 포함되어 있으며, 해당 경로에 접근하기 위해 필요한 스토리지 자격 증명이 포함되어 있습니다. 스토리지 자격 증명은 클라우드 스토리지에 액세스하기 위해 Azure 관리 ID와 같은 자격 증명을 지정하는 Unity 카탈로그 보안 개체입니다. 외부 위치를 만들기 위해 선택한 워크플로에 따라 외부 위치를 만들기 전에 스토리지 자격 증명을 만들어야 할 수 있습니다.
1단계에서 만든 연결을 사용하여 Unity 카탈로그에 외국 카탈로그를 만듭니다.
작업 영역 사용자 및 워크플로가 Unity Catalog를 사용하여 Hive 메타스토어 테이블과 작업할 수 있는 카탈로그입니다. 외국 카탈로그를 만든 후 Unity 카탈로그는 Hive 메타스토어에 등록된 테이블로 채웁니다.
Unity 카탈로그를 사용하여 외국 카탈로그의 테이블에 권한을 부여합니다.
세분화된 액세스 제어를 위해 Unity 카탈로그 행 및 열 필터를 사용할 수도 있습니다.
데이터 쿼리를 시작합니다.
Unity 카탈로그를 사용하여 외장 테이블에 대한 액세스는 외부 Hive 메타스토어에 대해 읽기 전용이며 내부 Hive 메타스토어의 경우 읽기 및 쓰기가 가능합니다.
내부 Hive 메타스토어 및 외부 Hive 메타스토어의 경우 Unity 카탈로그는 Hive 메타스토어에서 변경되는 테이블 메타데이터를 지속적으로 업데이트합니다. 내부 Hive 메타스토어의 경우 외부 카탈로그에서 커밋된 새 테이블 및 테이블 업데이트가 Hive 메타스토어에 다시 기록되어 Unity 카탈로그와 Hive 메타스토어 카탈로그 간의 완전한 상호 운용성을 유지합니다.
자세한 지침은 다음을 참조하세요.
- 레거시 작업 영역 Hive 메타스토어에 대한 Hive 메타스토어 페더레이션 사용을 활성화
- 외부 Hive 메타스토어에 대해 Hive 메타스토어 페더레이션을 활성화합니다.
Unity 카탈로그로 마이그레이션하는 동안 Hive 메타스토어 페더레이션을 어떻게 사용합니까?
Hive 메타스토어 페더레이션을 사용하면 팀과 워크로드 간의 조정 필요성을 줄여 Unity 카탈로그로 증분 방식으로 마이그레이션할 수 있습니다. 특히 Azure Databricks 작업 영역의 내부 Hive 메타스토어에서 마이그레이션하는 경우 Hive 메타스토어와 Unity 카탈로그 메타스토어에서 읽고 쓰는 기능은 마이그레이션 중에 "미러된" 메타스토어를 유지할 수 있다는 것을 의미하며 다음과 같은 이점을 제공합니다.
- 외국 카탈로그에 대해 실행되는 워크로드는 Hive 메타스토어 호환성 모드에서 실행되어 마이그레이션 중에 코드 적응 비용이 절감됩니다.
- 각 워크로드는 마이그레이션 기간 동안 Hive 메타스토어와 Unity 카탈로그 모두에서 데이터를 사용할 수 있으므로 서로 종속성이 있는 워크로드 간에 조정해야 하는 필요성을 완화하므로 다른 워크로드와 독립적으로 마이그레이션하도록 선택할 수 있습니다.
마이그레이션 컨텍스트에서 HMS 페더레이션의 개요를 제공하는 다이어그램
이 섹션에서는 Hive 메타스토어 페더레이션이 전환을 완화하면서 Azure Databricks 작업 영역의 내부 레거시 Hive 메타스토어를 Unity 카탈로그로 마이그레이션하는 일반적인 워크플로에 대해 설명합니다. 외부 Hive 메타스토어를 마이그레이션하는 데는 적용되지 않습니다. 외부 Hive 메타스토어에 대한 외국 카탈로그는 쓰기를 지원하지 않습니다.
1단계: 내부 Hive 메타스토어 페더레이션
이 단계에서는 Unity 카탈로그에서 Hive 메타스토어를 미러링하는 외국 카탈로그를 만듭니다. 이것을 hms_in_uc
이라고 부르겠습니다.
Hive 메타스토어에서 실행되는 워크로드와 미러된 Unity 카탈로그 외부 카탈로그의 존재를 보여주는 다이어그램
메모
페더레이션 프로세스의 일부로 클라우드 스토리지의 데이터에 대한 액세스를 제공하도록 외부 위치를 설정합니다. 일부 워크로드가 레거시 액세스 메커니즘을 사용하여 데이터를 쿼리하고 다른 워크로드가 Unity 카탈로그에서 동일한 데이터를 쿼리하는 마이그레이션 시나리오에서 외부 위치에 대한 Unity 카탈로그 관리 액세스 제어는 레거시 워크로드가 Unity 카탈로그 사용 컴퓨팅에서 스토리지 경로에 액세스하는 것을 방지할 수 있습니다. 이러한 외부 위치에서 "되돌리기 모드"를 활성화하여 레거시 워크로드에 정의된 클러스터 또는 노트북 범위의 자격 증명으로 되돌아가도록 설정할 수 있습니다. 그런 다음 마이그레이션이 완료되면 대체 모드를 해제합니다. 대체 모드란 무엇입니까?참조하세요.
자세한 내용은 레거시 작업 영역 Hive 메타스토어에 대한 Hive 메타스토어 페더레이션 사용
2단계. Unity 카탈로그에서 외국 카탈로그에 대해 새 워크로드 실행
외국 카탈로그가 있는 경우 SQL 분석가 및 데이터 과학 소비자에게 액세스 권한을 부여하고 이를 가리키는 새 워크로드 개발을 시작할 수 있습니다. 새 워크로드는 액세스 제어, 검색 및 계보를 비롯한 Unity 카탈로그의 추가 기능 집합을 활용할 수 있습니다.
Hive 메타스토어에서 실행되는 기존 워크로드와 미러된 Unity 카탈로그 외국 카탈로그에서 실행되는 새 워크로드를 보여 주는
이 단계에서는 일반적으로 다음을 수행합니다.
- Unity 카탈로그 호환 컴퓨팅(즉, 표준 또는 전용 컴퓨팅 액세스 모드, SQL 웨어하우스 또는 서버리스 컴퓨팅)을 선택합니다. 요구 사항 및 기능 지원을 참조하세요.
- 외산 카탈로그를 컴퓨팅 리소스에서 기본 카탈로그 만들거나 코드 맨 위에
USE CATALOG hms_in_uc
추가합니다. 외신 카탈로그의 스키마와 테이블 이름은 Hive 메타스토어에 있는 스키마와 테이블 이름에 대한 정확한 미러이므로 코드에서 외세 카탈로그를 참조하기 시작합니다.
3단계. 외국 카탈로그에 대해 실행할 기존 작업 마이그레이션
기존 작업을 마이그레이션하여 외국 카탈로그를 쿼리하려면 다음을 수행합니다.
- 작업 클러스터의 기본 카탈로그를
hms_in_uc
로 변경하려면 클러스터 자체의 속성을 설정하거나 코드 맨 위에USE CATALOG hms_in_uc
을 추가하세요. - 작업을 표준 또는 전용 액세스 모드 컴퓨팅으로 전환하고 Hive 메타스토어 페더레이션을 지원하는 Databricks 런타임 버전 중 하나로 업그레이드합니다. 요구 사항 및 기능 지원을 참조하세요.
- Azure Databricks 관리자에게
hms_in_uc
데이터 개체 및 작업이 액세스하는 클라우드 스토리지 경로(Unity 카탈로그 외부 위치에 포함)에 올바른 Unity 카탈로그 권한을 부여하도록 요청합니다. Unity 카탈로그에서 권한 관리을 참조하세요.
컨텍스트에서 HMS 페더레이션에 대한 개요를 제공하는 다이어그램의 두 번째 인스턴스입니다.
4단계. Hive 메타스토어에 대한 직접 액세스 사용 안 함
모든 워크로드를 마이그레이션하여 외국 카탈로그를 쿼리한 후에는 더 이상 Hive 메타스토어가 필요하지 않습니다.
Hive 메타스토어에 대한 직접 액세스를 사용하지 않도록 설정합니다.
Azure Databricks 작업 영역에서 사용하는 Hive 메타스토어에 대한 액세스 사용 안 함을 참조하세요.
사용자가 컴퓨팅 정책 및 사용자 격리 작업 영역 적용 설정을 사용하여 테이블 액세스 제어(격리 공유 액세스 모드 또는 레거시 사용자 지정 클러스터 유형을 사용하지 않는 클러스터)를 우회하는 클러스터를 만들고 사용하지 못하도록 합니다.
페더레이션된 카탈로그를 작업 영역 기본 카탈로그로 만듭니다.
기본 카탈로그관리를 참조하세요.
자주 묻는 질문
다음 섹션에서는 Hive 메타스토어 페더레이션에 대한 자세한 정보를 제공합니다.
대체 모드란?
폴백 모드는 Unity 카탈로그로 마이그레이션하는 동안 Unity 카탈로그 권한 검사를 우회하는 데 사용할 수 있는 외부 위치의 설정입니다. 설정하면 아직 마이그레이션되지 않은 워크로드가 설치 단계에서 영향을 받지 않습니다.
Unity 카탈로그는 클라우드 스토리지 계정에 액세스하기 위한 경로 및 자격 증명을 정의하는 보안 개체인 외부 위치를 사용하여 클라우드 스토리지에 액세스할 수 있습니다. 예를 들어 READ FILES
와 같은 권한을 부여하여 경로를 사용할 수 있는 사용자를 관리할 수 있습니다. 마이그레이션 프로세스 중에 발생할 수 있는 한 가지 과제는 경로를 참조하는 기존의 이동되지 않은 워크로드가 있을 때, Unity 카탈로그가 경로에 대한 모든 액세스를 즉시 제어하기를 원하지 않을 수 있다는 것입니다.
대체 모드를 사용하면 외부 위치에 대한 Unity 카탈로그 액세스 제어의 엄격한 적용을 지연할 수 있습니다. 대체 모드를 사용하도록 설정하면 경로에 액세스하는 워크로드가 먼저 Unity 카탈로그 권한에 대해 검사되고, 실패하는 경우 인스턴스 프로필 또는 Apache Spark 구성 속성과 같은 클러스터 또는 Notebook 범위 자격 증명을 사용하도록 대체합니다. 이렇게 하면 기존 워크로드가 현재 자격 증명을 계속 사용할 수 있습니다.
백업 모드는 마이그레이션 중에만 사용하도록 되어 있습니다. 모든 워크로드가 마이그레이션되고 Unity 카탈로그 액세스 제어를 적용할 준비가 되면 이를 해제해야 합니다.
대체 사용에 대한 쿼리 감사 로그
다음 쿼리를 사용하여 지난 30일 동안 외부 위치에 대한 액세스가 대체 모드를 사용했는지 확인합니다. 계정에 폴백 모드 액세스 권한이 없는 경우, Databricks는 폴백 모드를 해제할 것을 권장합니다.
SELECT event_time, user_identity, action_name, request_params, response, identity_metadata
FROM system.access.audit
WHERE
request_params.fallback_enabled = 'true' AND
request_params.path LIKE '%some-path%' AND
event_time >= current_date() - INTERVAL 30 DAYS
LIMIT 10
권한 있는 경로는 무엇인가요?
Hive 메타스토어 페더레이션에서 지원되는 외세 카탈로그를 만들 때 Hive 메타스토어 테이블이 저장된 클라우드 스토리지에 권한 있는 경로를 제공하라는 메시지가 표시됩니다. Hive 메타스토어 연합을 사용하여 액세스하려는 모든 테이블은 이러한 경로에 포함되어야 합니다. Databricks는 권한이 부여된 경로가 많은 테이블에서 공통적인 하위 경로로 설정될 것을 권장합니다. 예를 들어 abfss://container@storageaccount.dfs.core.windows.net/bucket/table1
, ./bucket/table2
및 ./bucket/table3
테이블이 있는 경우 abfss://container@storageaccount.dfs.core.windows.net/bucket/
권한 있는 경로로 제공해야 합니다.
UCX 사용하여 Hive 메타스토어에 있는 경로를 식별할 수 있습니다.
권한 있는 경로는 Hive 메타스토어 페더레이션에서 지원되는 외국 카탈로그에 추가 보안 계층을 추가합니다. 카탈로그 소유자는 사용자가 페더레이션을 사용하여 액세스할 수 있는 데이터에 가드레일을 적용할 수 있습니다. 이는 Hive metastore에서 사용자가 메타데이터를 업데이트하고 테이블 위치를 임의로 변경할 수 있도록 허용하는 경우에 유용합니다. 그렇지 않으면 이러한 업데이트는 외국 카탈로그로 자동으로 동기화됩니다. 이 시나리오에서 사용자는 액세스 권한이 없는 새 위치를 가리키도록 이미 액세스 권한이 있는 테이블을 다시 정의할 수 있습니다.
UCX를 사용하여 Hive 메타스토어를 통합할 수 있나요?
Azure Databricks 작업 영역을 Unity 카탈로그로 마이그레이션하기 위한 Databricks Labs 프로젝트인 UCX에는 Hive 메타스토어 페더레이션을 사용하도록 설정하는 유틸리티가 포함되어 있습니다.
enable-hms-federation
create-federated-catalog
GitHub의
요구 사항 및 기능 지원
다음 표에서는 Hive 메타스토어 페더레이션에서 지원하는 서비스 및 기능을 나열합니다. 경우에 따라 지원되지 않는 서비스 또는 기능도 나열됩니다. 이러한 테이블에서 "HMS"는 Hive 메타스토어를 의미합니다.
카테고리 | 지원됨 | 지원되지 않음 |
---|---|---|
메타스토어 |
|
|
운영 |
|
|
Hive 메타스토어 데이터 자산 |
|
|
보관 |
|
|
컴퓨팅 형식 |
|
격리 클러스터 없음 |
버전 계산 |
|
|
Unity 카탈로그 기능 |
|
|
얕은 복제본 작업하기
중요하다
단순 클론 지원은 공개 미리보기에 있습니다.
Hive 메타스토어 페더레이션은 Hive 메타스토어에 등록된 테이블에서 단순 클론 생성을 지원하며 다음과 같은 주의 사항이 있습니다.
Hive 메타스토어 페더레이션 카탈로그에서 얕은 클론을 읽으면, 클론의 프로비저닝 상태는
DEGRADED
입니다. 이는 단순 클론이 Hive 권한 모델을 사용하므로 단순 클론 테이블에서 읽는 사용자가 단순 클론과 기본 테이블 모두에 대한SELECT
권한을 갖도록 요구합니다.단순 클론을 Unity 카탈로그 권한 모델과 일치하도록 업그레이드하려면 테이블 소유자가
REPAIR TABLE <table> SYNC METADATA
실행해야 합니다. 명령을 실행한 후 테이블의 프로비저닝 상태가ACTIVE
변경되고 권한은 이후 Unity 카탈로그에 의해 제어됩니다. 단순 클론에 대한 후속 읽기는 명령이 Unity 카탈로그를 지원하는 컴퓨팅에서 실행되는 한, 단순 클론 자체에서만SELECT
이 요구됩니다.DBFS 또는 DBFS에 탑재된 테이블을 기반으로 만든 단순 클론은 지원되지 않습니다.
제한점
- 테이블 파일이 페더레이션 테이블의 위치 외부에 저장되는 페더레이션 테이블을 쿼리할 수 없습니다. 여기에는 파티션이 테이블 위치 외부에 저장되거나 Avro 테이블의 경우 테이블 속성을 사용하여 스키마를 참조하는 테이블이
avro.schema.url
포함될 수 있습니다. 이러한 테이블을 쿼리할 때UNAUTHORIZED_ACCESS
또는AccessDeniedException
예외가 발생할 수 있습니다.