다음을 통해 공유


레거시 작업 영역의 Hive 메타스토어에 대해 Hive 메타스토어 페더레이션을 활성화

이 문서에서는 조직에서 Unity 카탈로그를 사용하여 Hive 메타스토어 테이블을 사용할 수 있도록 레거시 Azure Databricks Hive 메타스토어를 페더레이션하는 방법을 보여 줍니다.

Hive 메타스토어 페더레이션에 대한 개요는 Hive 메타스토어 페더레이션을 참조하세요. Unity 카탈로그를 사용하여 Hive 메타스토어등록된 테이블을 제어합니다.

시작하기 전 주의 사항:

Hive 메타스토어 페더레이션에서 지원하는 서비스 및 기능 목록인 요구 사항 및 기능 지원을 검토합니다.

특정 요구 사항은 아래의 각 단계에 대해 나열됩니다.

1단계: Hive 메타스토어에 Unity 카탈로그 연결

이 단계에서는 데이터베이스 시스템에 액세스하기 위한 경로 및 자격 증명(이 경우 Azure Databricks 작업 영역의 레거시 Hive 메타스토어)을 지정하는 Unity 카탈로그 보안 개체인 연결을 만듭니다.

Requirements

  • Unity 카탈로그 메타스토어의 CREATE CONNECTION 권한입니다.

연결 만들기

연결은 외부 데이터베이스 시스템에 액세스하기 위한 경로 및 자격 증명을 지정합니다. 연결을 만들려면 Azure Databricks Notebook 또는 Databricks SQL 쿼리 편집기에서 카탈로그 탐색기 또는 CREATE CONNECTION SQL 명령을 사용할 수 있습니다.

Note

Databricks REST API 또는 Databricks CLI를 사용하여 연결을 만들 수도 있습니다. POST /api/2.1/unity-catalog/connectionsUnity Catalog 명령을 참조하십시오.

레거시 Azure Databricks Hive 메타스토어에 대한 연결을 구성할 때 API 요청에 옵션을 "builtin": "true" 포함합니다.

필요한 권한: 메타스토어 관리자 또는 CREATE CONNECTION 권한이 있는 사용자.

카탈로그 탐색기

  1. Azure Databricks 작업 영역에서 데이터 아이콘을 클릭합니다.카탈로그.

  2. 빠른 액세스 페이지에서 데이터 추가 > 연결추가를 클릭합니다.

  3. 연결 설정 마법사의 연결 기본 페이지에서 사용자에게 친숙한 연결 이름를 입력합니다.

  4. 연결 유형Hive Metastore에서 선택하고, 내부Metastore 형식을 선택합니다.

  5. (선택 사항) 주석을 입력합니다.

  6. 다음을 클릭합니다.

  7. (선택 사항) 연결 세부 정보 페이지에서 Hive Warehouse 디렉터리의 전체 경로를 입력합니다.

    기본 위치를 사용하지 않으려는 경우에만 필요합니다.

  8. 을 클릭하여 연결을 만듭니다.

  9. 카탈로그 기본 사항 페이지에서 외세 카탈로그의 이름을 입력합니다.

  10. 권한 있는 경로경우 카탈로그를 통해 액세스할 수 있는 클라우드 스토리지 경로를 선택합니다. 이러한 경로에 속하는 테이블만 페더레이션 카탈로그를 통해 쿼리할 수 있습니다. 경로는 외부 위치에 의해 덮여야 합니다. 자세한 내용은 권한 있는 경로란?을 참조하세요..

  11. 카탈로그만들기를 클릭합니다.

  12. 액세스 페이지에서 사용자가 만든 카탈로그에 액세스할 수 있는 작업 영역을 선택합니다. 액세스 권한이 있는 모든 작업 영역을 선택하거나 작업 영역에 할당을 클릭하고 작업 영역을 선택한 다음 할당을 클릭할 수 있습니다.

  13. 카탈로그의 모든 개체에 대한 액세스를 관리할 수 있는 소유자 추가합니다. 텍스트 상자에 사용자 또는 그룹 입력을 시작한 다음 반환된 결과에서 사용자 또는 그룹을 클릭합니다.

  14. 카탈로그에 권한을 부여하시오.

    1. Grant를 클릭합니다.
    2. 카탈로그의 객체에 액세스할 수 있는 주체를 지정하십시오. 텍스트 상자에 사용자 또는 그룹 입력을 시작한 다음 반환된 결과에서 사용자 또는 그룹을 클릭합니다.
    3. 각 사용자 또는 그룹에 부여할 권한 사전 설정 선택합니다. 모든 계정 사용자에게는 기본적으로 BROWSE 부여됩니다.
      • 드롭다운 메뉴에서 데이터 판독기 선택하여 카탈로그의 개체에 read 권한을 부여합니다.
      • 드롭다운 메뉴에서 데이터 편집기를 선택하여 카탈로그의 개체에 readmodify 권한을 부여합니다.
      • 부여할 권한을 수동으로 선택합니다.
    4. Grant를 클릭합니다.
  15. 다음을 클릭합니다.

  16. 메타데이터 페이지에서 선택적으로 태그를 키-값 쌍으로 지정합니다. 자세한 내용은 Unity 카탈로그 보안 개체에 태그 적용을 참조하세요.

  17. (선택 사항) 주석을 입력합니다.

  18. 저장을 클릭합니다.

SQL

Notebook 또는 SQL 쿼리 편집기에서 다음 명령을 실행합니다.

CREATE CONNECTION IF NOT EXISTS <connection-name> TYPE hive_metastore
  OPTIONS (
    builtin true,
    warehouse_directory '/path/to/warehouse-directory' );

클러스터 구성에서 Hive 메타스토어에 대한 기본 Hive 웨어하우스 디렉터리 위치를 사용하지 않으려는 경우에만 포함합니다 warehouse_directory . 이 경로는 페더레이션된 카탈로그에서 만들 때 관리되는 테이블 또는 스키마의 위치를 파생하는 데 사용됩니다.

2단계: 내부 레거시 Hive 메타스토어에서 데이터에 대한 외부 위치 만들기

이 단계에서는 레거시 내부 Hive 메타스토어에 등록된 데이터를 보관하는 클라우드 스토리지 위치에 대한 액세스를 제어하도록 Unity 카탈로그의 외부 위치를 구성합니다.

외부 위치스토리지 자격 증명을 클라우드 스토리지 컨테이너 경로와 연결하는 Unity 카탈로그의 보안 개체입니다.

외부 위치를 만들기 위한 옵션

Databricks가 Unity 카탈로그에서 외부 위치를 만들기 위해 권장하는 프로세스는 상황에 따라 달라집니다.

외부 위치에서 폴백 모드 활성화

Unity 카탈로그에서 외부 위치를 만드는 즉시 Unity 카탈로그 사용 컴퓨팅에서 쿼리를 실행할 때 해당 외부 위치가 나타내는 경로에 대한 액세스가 Unity 카탈로그 권한에 의해 적용됩니다. 이렇게 하면 경로에 액세스할 수 있는 올바른 Unity 카탈로그 권한이 없는 기존 워크로드가 중단됩니다.

외부 위치가 대체 모드인 경우 시스템은 먼저 해당 위치에 대한 쿼리 주체의 Unity 카탈로그 권한을 확인하고, 성공하지 못하면 기존 워크로드가 중단 없이 계속 실행되도록 기존 클러스터 또는 Notebook 범위 자격 증명(예: 인스턴스 프로필 또는 Apache Spark 구성 속성)을 사용하는 것으로 대체됩니다.

대체 모드는 레거시 워크로드를 마이그레이션하는 중일 때 편리합니다. Unity 카탈로그 사용 권한을 사용하여 워크로드를 성공적으로 실행하도록 업데이트한 후에는 레거시 클러스터 범위 자격 증명이 Unity 카탈로그 데이터 거버넌스를 우회하는 데 사용되지 않도록 대체 모드를 사용하지 않도록 설정해야 합니다.

카탈로그 탐색기 또는 Unity 카탈로그 외부 위치 REST API를 사용하여 대체 모드를 사용하도록 설정할 수 있습니다.

권한이 필요한: 외부 위치 소유자.

카탈로그 탐색기

  1. Azure Databricks 작업 영역에서 데이터 아이콘을 클릭합니다.카탈로그.
  2. 빠른 액세스 페이지에서 외부 데이터 >를 클릭합니다.
  3. 업데이트할 외부 위치를 선택합니다.
  4. 대체 모드 토글을 켜고 활성화를 클릭하여 확인하세요.

API

다음 curl 예제에서는 외부 위치를 만들고 기존 외부 위치를 업데이트할 때 대체 모드를 사용하도록 설정하는 방법을 보여 줍니다.

새 외부 위치 만들기:

curl -X POST -H 'Authorization: Bearer <token>' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations \
--data
'{
  "name": "fallback_mode_enabled_external_location",
  "url": "abfss://container-name@storage-account.dfs.core.windows.net/external_location_container/url",
  "credential_name": "external_location_credential",
  "fallback": true
  "skip_validation": true
}'

외부 위치 업데이트:

curl -X PATCH \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations/<external-___location-name> \
--data
 '{
   "comment": "fallback mode enabled",
   "fallback": true
  }'

3단계: 외세 카탈로그 만들기

Note

카탈로그 탐색기에서 연결 만들기 마법사를 사용하여 1단계를 완료한 경우 이 단계를 이미 완료했을 수 있습니다. 1단계를 완료할 때 외화 카탈로그를 만들지 않았거나 SQL을 사용하여 연결을 만든 경우 이 섹션의 지침을 따라야 합니다.

이 단계에서는 1단계에서 만든 연결을 사용하여 Unity 카탈로그에서 2단계에서 만든 외부 위치를 가리키는 외설 카탈로그를 만듭니다. 외국 카탈로그 외부 데이터 시스템의 데이터베이스 또는 카탈로그를 미러링하는 Unity 카탈로그의 보안 개체로, Unity 카탈로그에서 관리하는 액세스 권한으로 Azure Databricks 작업 영역에서 해당 데이터에 대한 쿼리를 수행할 수 있습니다. 이 경우에, 미러된 카탈로그는 Hive 메타스토어에 등록된 귀하의 데이터입니다.

사용자 또는 워크플로가 외국 카탈로그와 상호 작용할 때마다 Hive 메타스토어에서 메타데이터가 동기화됩니다.

요구 사항

사용 권한 요구 사항:

외국 카탈로그를 만들려면 다음을 수행합니다.

  • Unity Catalog 메타스토어의 CREATE CATALOG 특권입니다.
  • 연결의 소유권 또는 연결에 대한 CREATE FOREIGN CATALOG 권한
  • 외국 카탈로그에 대한 권한 있는 경로를 입력하려면 해당 경로를 포함하는 외부 위치에 대한 CREATE FOREIGN SECURABLE 권한이 있어야 합니다. 외부 위치의 소유자는 기본적으로 이 권한을 가집니다.

외신 카탈로그를 사용하려면 다음을 수행합니다.

  • 카탈로그 또는 USE CATALOG 항목의 소유권

컴퓨팅 요구 사항:

  • 카탈로그 탐색기를 사용하여 카탈로그를 만들려면 컴퓨팅이 필요하지 않습니다.
  • SQL: Databricks Runtime 13.3 LTS 이상을 사용하여 카탈로그를 만들려면
  • 카탈로그를 사용하려면 Databricks Runtime 13.3 LTS, 14.3 LTS, 15.1 이상에서 표준 액세스 모드를 사용하는 컴퓨팅 인스턴스를 설정해야 합니다.

외국 카탈로그 만들기

외국 카탈로그를 만들려면 Azure Databricks Notebook 또는 SQL 쿼리 편집기에서 카탈로그 탐색기 또는 CREATE FOREIGN CATALOG SQL 명령을 사용할 수 있습니다.

또한 외국 카탈로그을 관리하고 작업하는 방법도 참조하세요.

Note

Unity 카탈로그 API를 사용할 수도 있습니다. Databricks REST API 참조에서 카탈로그 만들기을 참조하십시오.

카탈로그 탐색기

  1. Azure Databricks 작업 영역에서 데이터 아이콘을 클릭한 후 카탈로그를 선택하여 카탈로그 탐색기를 엽니다.

  2. 빠른 액세스 페이지에서 데이터 추가 버튼을 클릭한 후 카탈로그 추가 를 선택합니다.

  3. 카탈로그 이름을 입력하고 외부유형의 카탈로그를 선택합니다.

  4. 1단계에서 만든 연결을 드롭다운에서 선택하세요.

  5. 권한 있는 경로 필드에 2단계에서 외부 위치로 정의한 클라우드 스토리지 위치의 경로를 입력합니다. 예: abfss://container@storageaccount.dfs.core.windows.net/demo, abfss://container@storageaccount.dfs.core.windows.net/depts/finance.

    권한 있는 경로는 Hive 메타스토어 페더레이션에서 지원되는 외국 카탈로그에 대한 추가 보안 계층입니다. 권한 있는 경로는 무엇인가요?.

  6. 만들기를 클릭합니다.

  7. (선택 사항) 구성을 클릭하여 카탈로그에 대한 사용 권한을 부여하고 태그를 추가하는 마법사를 엽니다. 나중에 이러한 단계를 수행할 수도 있습니다.

    Unity 카탈로그에서 권한 관리Unity 카탈로그 보안 개체에 태그 적용을 참조하세요.

  8. (선택 사항) 카탈로그를 특정 작업 영역에 바인딩합니다.

    기본적으로 Unity 카탈로그 메타스토어에 연결된 모든 작업 영역에서 카탈로그에 액세스할 수 있습니다(사용자 권한으로 제한됨). 특정 작업 영역에서만 액세스를 허용하려면 작업 영역 탭으로 이동하여 작업 영역을 할당합니다. 특정 작업 영역에 대한 카탈로그 액세스 제한을 참조하세요.

  9. 외부 카탈로그를 Hive 메타스토어 메타데이터로 채우다.

    사용자 또는 워크플로가 외국 카탈로그와 상호 작용할 때마다 Hive 메타스토어에서 메타데이터가 동기화됩니다. 첫 번째 상호 작용은 Unity 카탈로그의 카탈로그를 채우고 카탈로그 탐색기 UI에 해당 콘텐츠를 표시합니다. 카탈로그 탐색기에서 지원되는 컴퓨팅 리소스 선택하고 시작하여 카탈로그를 채울 수 있습니다. 카탈로그 소유자(카탈로그를 생성함으로써 소유자가 됩니다) 또는 USE CATALOG 권한이 있는 사용자여야 합니다.

SQL

다음 SQL 명령을 노트북이나 SQL 쿼리 편집기에서 실행하십시오. 괄호 안의 항목은 선택 사항입니다. 자리 표시자 값을 바꾸세요.

  • <catalog-name>: Azure Databricks에서 카탈로그의 이름입니다.
  • <connection-name>: 1단계에서 만든 연결 개체의 이름입니다.
  • <path1>,<path2>: 2단계에서 외부 위치로 정의한 클라우드 스토리지 위치의 경로입니다. 예: abfss://container@storageaccount.dfs.core.windows.net/demo, abfss://container@storageaccount.dfs.core.windows.net/depts/finance. 권한 있는 경로는 Hive 메타스토어 페더레이션에서 지원되는 외국 카탈로그에 대한 추가 보안 계층입니다. 권한 있는 경로는 무엇인가요?. 권한 있는 경로는 무엇인가요?. 카탈로그를 만들 때 권한 있는 경로를 추가하지 않으면 ALTER CATALOG 사용하여 나중에 추가할 수 있습니다. ALTER CATALOG을(를) 참조하세요.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (authorized_paths '<path1>,<path2>');

사용자 또는 워크플로가 페더레이션된 카탈로그와 상호 작용할 때마다 Hive 메타스토어에서 메타데이터가 동기화됩니다.

Note

외세의 테이블에 DBFS의 스토리지 위치가 있고 테이블을 백업하는 DBFS 탑재 지점이 테이블에 마지막으로 액세스한 이후 다른 경로로 다시 매핑된 경우 UC_RESOLVED_DBFS_PATH_MISMATCH 오류 코드로 테이블에 대한 액세스가 실패합니다. 다음 명령을 사용하여 확인된 DBFS 위치를 업데이트하고 오류를 수정합니다.

REFRESH FOREIGN TABLE my_federated_catalog.schema.table RESOLVE DBFS LOCATION;

테이블의 소유자이거나 관리 권한을 가지고 있어야 합니다. REFRESH FOREIGN(CATALOG, SCHEMA및 TABLE)참조하세요.