Hive 메타스토어 페더레이션: Unity Catalog이 Hive 메타스토어에 등록된 tables을 제어할 수 있도록 설정
중요하다
이 기능은 퍼블릭 프리뷰중입니다.
이 문서에서는 Hive 메타스토어에 저장된 tables을 제어할 수 있도록 하는 Unity Catalog의 기능인 Hive 메타스토어 페더레이션을 소개합니다. 외부 Hive 메타스토어 또는 레거시 내부 Azure Databricks Hive 메타스토어를 페더레이션할 수 있습니다.
Hive 메타스토어 페더레이션은 다음 사용 사례에 사용할 수 있습니다.
Unity Catalog마이그레이션 경로의 한 단계로, 코드 적응 없이 증분 마이그레이션을 가능하게 하고, 일부 워크로드는 Hive 메타스토어에 등록된 데이터를 계속 사용하도록 하고 다른 워크로드는 마이그레이션됩니다.
이 사용 사례는 오늘날 레거시 내부 Azure Databricks Hive 메타스토어를 사용하는 조직에 가장 적합합니다. 페더레이션된 내부 Hive metastores은 읽기 및 쓰기 워크로드를 모두 허용하기 때문입니다.
Unity Catalog에 등록된 데이터와 함께 Hive 메타스토어에 일부 데이터를 유지해야 하는 조직을 위한 장기적인 하이브리드 모델을 제공합니다.
이 사용 사례는 외부 Hive 메타스토어를 사용하는 조직에 가장 적합합니다. 왜냐하면 이러한 Hive metastores에 대한 페더레이션된 catalogs는 읽기 전용이기 때문입니다.
Hive 페더레이션 소개하는
Hive 메타스토어 페더레이션 개요
Hive 메타스토어 페더레이션에서는 Azure Databricks 작업 공간에서 Hive 메타스토어로 연결을 생성합니다. 그 후, Unity Catalog가 Hive 메타스토어를 크롤링하여, 조직이 Unity Catalog환경 내에서 Hive 메타스토어 tables와 함께 작업할 수 있도록 페더레이션된 catalog을(를) 구성합니다. 이를 통해 중앙 집중식 액세스 제어, 계보, 검색 등을 제공합니다.
Azure Databricks 작업 영역 외부에 있는 페더레이션된 Hive metastores은 Unity Catalog를 사용하여 읽기를 허용합니다. 내부 Hive metastores 읽기 및 쓰기를 허용하며, 작성할 때 Unity Catalog 메타데이터뿐만 아니라 Hive 메타스토어 메타데이터도 업데이트합니다.
페더레이션된 Hive 메타스토어 자산을 쿼리할 때 Unity Catalog 액세스 제어 검사 및 감사와 같은 기능을 수행하는 거버넌스 계층을 제공하고 Hive 메타스토어 의미 체계를 사용하여 쿼리를 실행합니다. 예를 들어 사용자가 페더레이션된 catalog에서 Parquet 형식으로 저장된 table를 쿼리하는 경우에는 다음과 같습니다.
- Unity Catalog는 사용자가 table에 대한 액세스 권한이 있는지 확인하고 쿼리의 계보를 유추합니다.
- 쿼리 자체는 최신 메타데이터와 partition 정보를 활용하여 기본 Hive 메타스토어를 대상으로 실행됩니다.
Hive 페더레이션 시나리오에서 HMS, Unity Catalog및 Databricks 워크로드 간의 관계를 보여 주는
Hive 메타스토어 페더레이션은 Unity Catalog 외부 tables사용하는 방법과 어떻게 비교됩니까?
Unity Catalog은 임의의 클라우드 스토리지 위치에 이미 존재하는 데이터를 가져와서 이를 Unity Catalog에 table로 등록하는 외부 tables을 만들 수 있습니다. 이 섹션에서는 외부 Hive 메타스토어와 페더레이션 Hive 메타스토어 tables간의 차이점을 살펴봅니다.
두 table 형식에는 다음 속성이 있습니다.
- 임의의 클라우드 저장소 위치를 table로 등록하는 데 사용할 수 있습니다.
- Unity Catalog 권한 및 세분화된 액세스 제어를 적용할 수 있습니다.
- 해당 쿼리를 참조하는 쿼리의 계보에서 볼 수 있습니다.
페더레이션된 tables만이 다음과 같은 속성을 가지고 있습니다.
- Hive 메타스토어 크롤링에 따라 자동으로 검색됩니다. Hive 메타스토어에서 tables가 만들어지는 즉시, Unity Catalog의 페더레이션된 catalog에 쿼리할 수 있습니다.
- Hive SerDes 및 파티션과 같은 Hive 의미 체계를 사용하여 tables 정의할 수 있도록 허용합니다.
- tables이 페더레이션된 catalogs안에서 다른 tables과 경로가 겹치는 것을 허용합니다.
- tables이(가) DBFS 루트 위치에 배치될 수 있도록 허용합니다.
- Hive 메타스토어에 정의된 views을 포함하십시오.
이러한 방식으로, 페더레이션 형식의 Hive 메타스토어 tables는 이전 버전인 Hive 메타스토어와의 호환성을 제공하여 워크로드가 Hive 전용 데이터 의미 체계를 사용할 수 있도록 합니다. 그러나 Unity Catalog에서 제공하는 거버넌스도 동시에 사용할 수 있습니다.
그러나 일부 Unity Catalog 기능은 페더레이션된 tables에서는 사용할 수 없습니다. 예를 들면 다음과 같습니다.
- Unity Catalog으로 관리되는 tables에서만 사용할 수 있는 기능, 예를 들어 예측 최적화 기능이 있습니다.
- 벡터 검색, 델타 공유, 레이크하우스 모니터링 및 온라인 tables.
- 기능 저장소 만들기, 모델 제공 만들기, 기능 사양 만들기, 모델 로깅 및 일괄 처리 채점을 비롯한 일부 기능 저장소 기능.
Hive 메타스토어와 Unity Catalog 모두 페더레이션된 table쿼리 경로에 있으므로 Unity Catalog 또는 Hive 메타스토어의 워크로드보다 성능이 약간 더 나빠질 수 있습니다.
지원되는 기능에 대한 자세한 내용은 요구 사항, 지원되는 기능 및제한 사항을 참조하세요.
Azure Databricks에서 페더레이션된 Hive 메타스토어 catalog 쓰는 것은 무엇을 의미하나요?
쓰기 작업은 외부 Hive metastores이 아닌 페더레이션된 내부 Hive metastores에 대해서만 지원됩니다.
페더레이션된 metastores 쓰기는 두 가지 유형으로 나눌 수 있습니다.
CREATE TABLE
,ALTER TABLE
및DROP TABLE
같은 DDL 작업.DDL 작업은 기본 Hive 메타스토어에 동기적으로 반영됩니다. 예를 들어
CREATE TABLE
문을 실행하면 Hive 메타스토어와 페더레이션된 catalog모두에 table 생성됩니다.경고
이는 또한
DROP
명령이 Hive 메타스토어에 반영됨을 의미합니다. 예를 들어, 기본 Hive 메타스토어 schema에서DROP SCHEMA mySchema CASCADE
가 tables를 삭제할 때, Hive 메타스토어는UNDROP
를 지원하지 않기 때문에UNDROP
옵션 없이 삭제합니다.INSERT
,UPDATE
및DELETE
같은 DML 작업.DML 작업은 기저 Hive 메타스토어 table에 동기적으로 반영됩니다. 예를 들어
INSERT INTO
를 실행하면 Hive 메타스토어의 table에 레코드를 추가합니다.쓰기 지원은 Hive 메타스토어에서 Unity Catalog마이그레이션하는 동안 원활한 전환을 가능하게 하는 열쇠입니다. Unity로 마이그레이션하는 동안 Hive 메타스토어 페더레이션을 어떻게 사용합니까? Catalog.
Hive 메타스토어 페더레이션을 어떻게 set 설정하나요?
Hive 메타스토어 페더레이션을 설정하려면 set, 다음을 수행합니다.
Unity Catalog에서 Hive 메타스토어에 액세스하기 위한 경로 및 credentials을 지정하는 연결을 생성합니다.
Hive 메타스토어 페더레이션은 이 연결을 사용하여 Hive 메타스토어를 크롤링합니다. 대부분의 데이터베이스 시스템에서는 사용자 이름과 암호를 제공합니다. 레거시 내부 Azure Databricks 작업 영역 Hive metastore에 연결하기 위해 Hive 메타스토어 페더레이션은 권한 부여를 처리합니다.
Hive 메타스토어에 등록된 tables 경로에 대한 스토리지 자격 증명과 Unity Catalog에서 외부 위치를 만듭니다.
외부 위치에는 경로 및 그 경로에 대한 액세스에 필요한 스토리지 credentials가 포함됩니다. 스토리지 credentials은(는) 클라우드 스토리지에 액세스하기 위해 Azure 관리 ID와 같은 credentials를 지정할 수 있는 Unity Catalog 보안 개체입니다. 외부 위치를 만들기 위해 선택한 워크플로에 따라 외부 위치를 만들기 전에 스토리지 credentials 만들어야 할 수 있습니다.
1단계에서 만든 연결을 사용하여 Unity Catalog에서 페더레이션된 catalog를 만드십시오.
작업 공간의 사용자 및 워크플로가 Unity Catalog를 사용하여 Hive 메타스토어 tables과 작업하는 데 사용하는 것이 catalog입니다. 페더레이션된 catalog를 만든 후에, Unity Catalog이 Hive 메타스토어에 등록된 tables를 채웁니다.
Unity Catalog을 사용하여 페더레이션된 catalog에서 tables에 Grant 권한을 부여합니다.
세분화된 액세스 제어를 위해 Unity Catalog 행 및 column 필터를 사용할 수도 있습니다.
데이터 쿼리를 시작합니다.
Unity Catalog를 사용하여 페더레이션된 데이터에 대한 액세스는 외부 Hive metastores에서는 읽기 전용이며, 내부 Hive metastores에서는 읽기 및 쓰기가 가능합니다.
내부 Hive metastores 및 외부 Hive metastores에 대해 Unity Catalog는 Hive 메타스토어에서 변경될 때마다 table 메타데이터를 지속적으로 업데이트합니다. 내부 Hive metastores의 경우, 페더레이션된 catalog에서 커밋된 새로운 tables 및 table 업데이트가 Hive 메타스토어에 기록되어, Unity Catalog와 Hive 메타스토어 catalogs사이의 완전한 상호 운용성을 유지합니다.
자세한 지침은 다음을 참조하세요.
- 레거시 작업 영역 Hive 메타스토어에 대한 Hive 메타스토어 페더레이션 사용을 활성화
- 외부 Hive 메타스토어 대한 Hive 메타스토어 페더레이션 사용
Unity Catalog마이그레이션하는 동안 Hive 메타스토어 페더레이션을 어떻게 사용합니까?
Hive 메타스토어 페더레이션을 사용하면 팀과 워크로드 간의 조정의 필요성을 줄여 Unity Catalog으로 점진적으로 마이그레이션할 수 있습니다. 특히 Azure Databricks 작업 영역의 내부 Hive 메타스토어에서 마이그레이션하는 경우 Hive 메타스토어와 Unity Catalog 메타스토어에서 읽고 쓰는 기능은 마이그레이션 중에 "미러된" metastores을 유지할 수 있다는 것을 의미하며, 이를 통해 다음과 같은 이점을 제공합니다.
- 페더레이션된 catalogs 대해 실행되는 워크로드는 Hive 메타스토어 호환성 모드에서 실행되어 마이그레이션 중에 코드 적응 비용이 절감됩니다.
- 각 워크로드는 마이그레이션 기간 동안 Hive 메타스토어와 Unity Catalog둘 다에서 데이터를 사용할 수 있으므로 서로 종속성이 있는 워크로드 간에 조정해야 하는 필요성을 완화하므로 다른 워크로드와 독립적으로 마이그레이션하도록 선택할 수 있습니다.
마이그레이션 컨텍스트에서 HMS 페더레이션의 개요를 제공하는 다이어그램
이 섹션에서는 Azure Databricks 작업 영역의 내부 레거시 Hive 메타스토어를 Unity Catalog마이그레이션하는 일반적인 워크플로에 대해 설명하며 Hive 메타스토어 페더레이션이 전환을 완화합니다. 외부 Hive 메타스토어를 마이그레이션하는 데는 적용되지 않습니다. 외부 Hive metastores에 대한 페더레이션된 catalogs는 쓰기 작업을 지원하지 않습니다.
1단계: 내부 Hive 메타스토어 페더레이션
이 단계에서는 Unity Catalog의 Hive 메타스토어를 미러링하는 페더레이션된 catalog을 만듭니다.
hms_in_uc
이라고 합시다.
Hive 메타스토어에서 실행되는 워크로드와 미러된 Unity Catalog 및 페더레이션된 catalog가 존재함을 보여 주는
메모
페더레이션 프로세스의 일부로 외부 위치를 set 클라우드 스토리지의 데이터에 대한 액세스를 제공합니다. 일부 워크로드가 레거시 액세스 메커니즘을 사용하여 데이터를 쿼리하고 다른 워크로드가 Unity Catalog동일한 데이터를 쿼리하는 마이그레이션 시나리오에서는 외부 위치에 대한 Unity Catalog관리형 액세스 제어를 통해 레거시 워크로드가 Unity Catalog사용 가능한 컴퓨팅에서 스토리지 경로에 액세스하는 것을 방지할 수 있습니다. 이러한 외부 위치에서 "대체 모드"를 활성화하여, 레거시 워크로드를 위해 정의된 클러스터 범위 또는 Notebook 범위 내의 credentials 설정으로 대체할 수 있습니다. 그런 다음 마이그레이션이 완료되면 대체 모드를 해제합니다. 대체 모드란 무엇입니까?참조하세요.
자세한 내용은 레거시 작업 영역 Hive 메타스토어에 대한 Hive 메타스토어 페더레이션 사용
2단계. Unity Catalog에서 페더레이션된 catalog에 대해 새 워크로드를 실행
페더레이션된 catalog 있는 경우 SQL 분석가 및 데이터 과학 소비자가 액세스하도록 grant 이를 가리키는 새 워크로드 개발을 시작할 수 있습니다. 새 워크로드는 Unity Catalog의 set 추가 기능, 즉 액세스 제어, 검색, 계보 등을 통해 혜택을 받을 수 있습니다.
이 단계에서는 일반적으로 다음을 수행합니다.
- Unity Catalog호환 컴퓨팅(즉, 단일 사용자 또는 공유 클러스터 액세스 모드, SQL 웨어하우스 또는 서버리스 컴퓨팅)을 선택합니다. 요구 사항, 지원되는 기능 및제한 사항을 참조하세요.
- 컴퓨터 리소스에서 페더레이션된 catalog를 기본 catalog로 설정하거나 코드 맨 위에
USE CATALOG hms_in_uc
를 추가합니다. 페더레이션된 catalog의 스키마 및 table 이름은 Hive 메타스토어에 있는 스키마의 정확한 미러이므로, 귀하의 코드는 페더레이션된 catalog를 참조하기 시작합니다.
3단계. 페더레이션된 catalog에 대해 실행하도록 기존 작업을 마이그레이션하기
기존 작업을 페더레이션된 catalog쿼리로 마이그레이션하려면:
- 클러스터 자체에서 속성을 설정하여 작업 클러스터의 기본 catalog를
hms_in_uc
로 변경하거나, 코드 맨 위에USE CATALOG hms_in_uc
를 추가하여 변경합니다. - 작업을 단일 사용자 또는 공유 액세스 모드 컴퓨팅으로 전환하고 Hive 메타스토어 페더레이션을 지원하는 Databricks 런타임 버전 중 하나로 업그레이드합니다. 요구 사항, 지원되는 기능 및제한 사항을 참조하세요.
- Azure Databricks 관리자에게
hms_in_uc
데이터 개체 및 작업이 액세스하는 클라우드 스토리지 경로(Unity Catalog 외부 위치에 포함)에 대한 올바른 Unity Catalog 권한을 grant 요청합니다. Unity에서 권한 관리를 참조하십시오 Catalog.
컨텍스트에서 HMS 페더레이션에 대한 개요를 제공하는 다이어그램의 두 번째 인스턴스입니다.
4단계. Hive 메타스토어에 대한 액세스 Deny
페더레이션된 catalog쿼리하기 위해 모든 워크로드를 마이그레이션한 후에는 더 이상 Hive 메타스토어가 필요하지 않습니다. 레거시 table 액세스 제어 및 컴퓨팅 권한을 사용하여 Azure Databricks 작업 영역에서 Hive 메타스토어로의 직접 액세스를 차단할 수 있습니다. 예를 들어 다음을 수행할 수 있습니다.
Hive 메타스토어 catalog개체에 대한 모든 권한을 Revoke.
MSCK REPAIR PRIVILEGES
명령은 이 용도로 편리합니다. MSCK REPAIR PRIVILEGES 및 Hive 메타스토어 권한 및 보안 개체(레거시)참조하십시오.사용자가 table 액세스 제어를 우회하는, 즉 격리되지 않은 공유 액세스 모드 또는 레거시 사용자 지정 클러스터 유형을 사용한 클러스터를 생성하고 사용하는 것을 컴퓨팅 정책으로 방지합니다.
"페더레이션된 catalog을 작업 공간의 기본값으로 설정하십시오 catalog."
기본 catalog관리를 참조하세요.
자주 묻는 질문
다음 섹션에서는 Hive 메타스토어 페더레이션에 대한 자세한 정보를 제공합니다.
대체 모드란?
대체 모드은 외부 위치에서 설정할 수 있는 옵션으로, Unity Catalog마이그레이션 중에 Unity Catalog의 권한 검사를 우회할 수 있습니다. 설정하면 아직 마이그레이션되지 않은 워크로드가 설치 단계에서 영향을 받지 않습니다.
Unity Catalog는 외부 위치를 사용하여 클라우드 스토리지에 액세스합니다. 외부 위치는 클라우드 스토리지 계정에 접속하기 위한 경로와 자격 증명을 정의하는 보안 객체입니다. 예를 들어 READ FILES
와 같은 권한을 부여하여 경로를 사용할 수 있는 사용자를 관리할 수 있습니다. 마이그레이션 프로세스에서의 한 가지 과제는, 기존의 이동되지 않은 워크로드가 경로를 참조하는 경우 Unity Catalog이 경로에 대한 모든 액세스를 즉시 관리하기 시작하지 않기를 원할 수 있다는 점입니다.
대기 모드를 사용하면 외부 위치에 대한 Unity Catalog의 엄격한 액세스 제어 시행을 지연할 수 있습니다. 대체 모드를 사용하도록 설정하면 경로에 액세스하는 워크로드가 먼저 Unity Catalog 권한에 대해 검사되고, 실패하는 경우 인스턴스 프로필 또는 Apache Spark 구성 속성과 같은 클러스터 또는 Notebook 범위의 credentials사용하도록 대체합니다. 이렇게 하면 기존 워크로드가 현재 자격 증명을 계속 사용할 수 있습니다.
백업 모드는 마이그레이션 중에만 사용하도록 되어 있습니다. 모든 워크로드가 마이그레이션되고 Unity Catalog 액세스 제어를 적용할 준비가 되면 해제해야 합니다.
대체 사용량에 대한 쿼리 감사 로그
다음 쿼리를 사용하여 지난 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
권한 있는 경로는 무엇인가요?
페더레이션된 abfss://container@storageaccount.dfs.core.windows.net/bucket/table1
, ./bucket/table2
, 및 ./bucket/table3
에 tables가 있을 경우 권한 있는 경로로 abfss://container@storageaccount.dfs.core.windows.net/bucket/
를 제공해야 합니다.
UCX 사용하여 Hive 메타스토어에 있는 경로를 식별할 수 있습니다.
권한 있는 경로는 사용자들이 페더레이션을 사용하여 액세스할 수 있는 데이터에 대해 catalog 소유자가 가드레일을 적용함으로써 페더레이션된 catalogs에 추가 보안 계층을 제공합니다. 이는 Hive metastore를 통해 사용자가 메타데이터를 updatetable 위치(그렇지 않으면 페더레이션된 catalog동기화되는 업데이트)를 임의로 변경할 수 있는 경우에 유용합니다. 이 시나리오에서 사용자는 이미 액세스할 수 있는 tables을 재정의한다면, 액세스 권한이 없는 새 위치를 가리킬 수 있게 됩니다.
UCX를 사용하여 Hive metastores 페더레이션할 수 있나요?
Azure Databricks 작업 영역을 Unity Catalog마이그레이션하기 위한 Databricks Labs 프로젝트인 UCX에는 Hive 메타스토어 페더레이션을 사용하도록 설정하는 유틸리티가 포함되어 있습니다.
enable-hms-federation
create-federated-catalog
GitHub의
요구 사항, 지원되는 기능 및 제한 사항
다음 table Hive 메타스토어 페더레이션에서 지원하는 서비스 및 기능을 나열합니다. 경우에 따라 지원되지 않는 서비스 또는 기능도 나열됩니다. 이 tables에서 "HMS"는 Hive 메타스토어를 나타냅니다.
범주 | 지원됨 | 지원되지 않음 |
---|---|---|
Metastores | - 레거시 작업 영역 Hive metastores(Databricks 내부) - Apache Hive 버전 0.13 또는 2.3에서 mySQL을 사용하는 외부 metastores |
- mySQL이 아닌 다른 데이터베이스의 외부 metastores - Hive 3.1 |
운영 | - 내부 Databricks HMS: 읽기 및 쓰기 - 외부 HMS: 읽기 전용 모드 |
|
Hive 메타스토어 데이터 자산 | - Hive 메타스토어에서 tables의 관리 및 외부 관리 -스키마 - Views - Hive SerDe tables |
- Hive 함수 및 사용자 정의 함수 (UDF) - 페더레이션 catalog에서 새로운 셸로우 클론 정의 - JDBC 기반 tables - Delta Sharing에서 공유한 tables - 페더레이션된 catalog를 통해서 Hive 메타스토어에 등록된 얕은 클론에 액세스 |
보관 | - Azure Data Lake Storage Gen2 - DBFS 루트를 포함하여 DBFS 탑재 위치를 참조하는 Tables - 외부 위치에 정의된 다른 HMS table 경로와 겹치는 경로를 가진 Tables |
- HMS tables의 경로가 네이티브 Unity Catalog 개체 경로와 겹치는 경우 - 외부 HMS에 등록된 DBFS 루트 또는 마운트 경로의 tables 액세스 - 내부 HMS가 정의된 작업 공간을 제외한 다른 작업 공간에서 DBFS 루트 또는 마운트 위치의 tables에 대한 액세스 작업 영역 스토리지 계정에 대한 |
컴퓨팅 형식 | - 공유 클러스터 - 개별 사용자에게 할당된 클러스터 - 서버리스(모두) - 모든 SQL 웨어하우스 |
격리 클러스터 없음 |
버전 계산 | - 모든 Databricks SQL 채널 - 모든 Delta Live Tables 채널 - Databricks Runtime 13.3 LTS - Databricks Runtime 14.3 LTS - Databricks Runtime 15.1 이상 |
|
Unity Catalog 기능 | - Unity Catalog 권한 모델 - 행 필터 및 column 마스크 -감사 - 다운스트림 계보 - Table 검색 - 워크스페이스 간 액세스(단, DBFS 루트 및 탑재는 제외) - 정의된 외부 위치로 제한된 데이터 액세스 |
- 델타 공유 - Lakehouse 모니터링 - 벡터 검색 - 온라인 tables - 기능 저장소 만들기, 모델 제공 생성, 기능 사양 만들기, 모델 로깅 및 일괄 처리 점수 매기기 등 일부 기능 저장소 기능 - Delta Live Tables 구체화된 views 및 스트리밍 tables 을 페더레이션된 catalog으로 작성할 수는 없지만, 페더레이션된 자산을 Delta Live Tables 구체화된 views 및 스트리밍 tables의 원본으로 사용할 수 있습니다. - 페더레이션된 catalog의 레거시 table ACL을 Unity Catalog 권한으로 자동 마이그레이션합니다. UCX은 이에 도움을 줄 수 있습니다. |