Azure Databricks 작업 영역을 Unity 카탈로그로 업그레이드

이 페이지에서는 Unity 카탈로그가 아닌 작업 영역을 Unity 카탈로그로 업그레이드하는 방법에 대한 개요를 제공합니다. 또한 레거시 Hive 메타스토어, DBFS 및 지원되지 않는 Databricks 런타임 버전에서 마이그레이션하기 위한 지침을 제공합니다.

업그레이드 단계 개요

Unity 카탈로그로 업그레이드하려면 다음을 수행해야 합니다.

  1. 아직 수행하지 않은 경우 ID(사용자, 그룹 및 서비스 주체)를 Azure Databricks 계정에 직접 프로비전합니다. 작업 영역 수준 ID 프로비저닝을 해제합니다.
  2. 작업 영역-로컬 그룹을 계정 수준 그룹으로 변환합니다. Unity 카탈로그는 계정 수준에서 ID 관리를 중앙 집중화합니다.
  3. Unity 카탈로그 메타스토어에 작업 영역을 연결합니다. 작업 영역 지역에 대한 메타스토어가 없으면 계정 관리자가 메타스토어를 만들어야 합니다.
  4. Hive 메타스토어에서 관리되는 테이블 및 뷰를 Unity 카탈로그로 업그레이드합니다.
  5. 계정 수준 사용자, 그룹 또는 서비스 주체에게 업그레이드된 테이블에 대한 액세스 권한을 부여합니다.
  6. 이전 Hive 메타스토어 테이블 대신 새 Unity 카탈로그 테이블을 참조하도록 쿼리 및 작업을 업데이트합니다.
  7. DBFS에서 파일, Notebook 및 스크립트를 마이그레이션합니다.
  8. 활성 컴퓨팅 리소스를 지원되는 Databricks 런타임 버전으로 업그레이드합니다.
  9. 작업 영역에서 레거시 기능에 대한 액세스를 사용하지 않도록 설정합니다. 작업 영역에서 레거시 기능에 대한 액세스 비활성화를 참조하세요.

Databricks Labs 프로젝트인 UCX는 Unity 카탈로그가 아닌 작업 영역을 Unity 카탈로그로 업그레이드하는 데 도움이 되는 도구를 제공합니다. UCX는 대규모 마이그레이션에 적합합니다. UCX 유틸리티를 사용하여 작업 영역을 Unity 카탈로그로 업그레이드하는 방법을 참조하세요.

시작하기 전에

시작하기 전에 메타스토어 및 관리 스토리지를 비롯한 기본 Unity 카탈로그 개념을 숙지해야 합니다. Unity Catalog란 무엇인가요?.

또한 다음 요구 사항을 충족하는지 확인해야 합니다.

  • 대부분의 설정 단계에서는 Azure Databricks 계정 관리자여야 합니다. 다른 사용 권한 요구 사항이 있는 다음 작업의 경우 작업별 설명서에 나열됩니다.

    첫 번째 Azure Databricks 계정 관리자는 Azure Databricks 계정 콘솔에 처음 로그인할 때 Microsoft Entra ID 전역 관리자여야 합니다. 처음 로그인하면 해당 사용자는 Azure Databricks 계정 관리자가 되며 더 이상 Azure Databricks 계정에 액세스하기 위해 Microsoft Entra ID 전역 관리자 역할이 필요하지 않습니다. 첫 번째 계정 관리자는 Microsoft Entra ID 테넌트에서 사용자를 추가 계정 관리자(더 많은 계정 관리자를 할당할 수 있는 사용자)로 할당할 수 있습니다. 추가 계정 관리자는 Microsoft Entr ID에서 특정 역할을 필요로 하지 않습니다.

  • metastore에 연결하는 작업 영역은 Azure Databricks Premium 플랜에 있어야 합니다.

Unity 카탈로그 데모로 업그레이드

다음의 간단한 안내 데모를 시청하여 주요 업그레이드 작업이 작동하는지 확인합니다. 각 데모에서는 특정 단계를 다루며 해당하는 경우 자세한 설명서에 대한 링크를 제공합니다.

또는 UCX를 사용하여 Unity 카탈로그로 업그레이드하는 데모를 따를 수 있습니다.

계정에 사용자, 그룹 및 서비스 주체를 프로비전합니다.

Unity 카탈로그는 계정 수준 ID를 참조합니다. 메타스토어를 작업 영역에 연결하기 전에 다음을 수행해야 합니다.

  • SCIM을 사용하여 사용자, 그룹 및 서비스 주체를 IdP에서 작업 영역으로 프로비전하는 경우 이를 해제하고 Azure Databricks 계정에 대한 프로비저닝을 대신 설정합니다. 귀하의 ID 공급자로부터 ID를 동기화하는 방법ID를 참조하세요.

  • SCIM 프로비저닝 커넥터 및 Terraform 자동화와 같은 사용자, 그룹 및 서비스 주체를 관리하도록 구성된 자동화를 업데이트하여 작업 영역 엔드포인트 대신 계정 엔드포인트를 참조하도록 합니다. 계정 수준 및 작업 영역 수준 SCIM 프로비저닝을 참조하세요.

작업 영역-로컬 그룹을 계정 수준 그룹으로 변환

workspace-local 그룹을 계정 그룹으로 마이그레이션을 참조하세요.

메타스토어에 작업 영역 연결

작업 영역이 Unity 카탈로그에 대해 사용하도록 설정되지 않은 경우(메타스토어에 연결됨) 다음 단계는 작업 영역 영역에 대해 Unity 카탈로그 메타스토어가 이미 정의되어 있는지 여부에 따라 달라집니다.

Hive 메타스토어의 테이블을 Unity 카탈로그 테이블로 업그레이드

Unity 카탈로그를 사용하도록 설정하기 전에 작업 영역이 서비스 중이면 계속 사용하려는 데이터가 포함될 가능성이 있는 Hive 메타스토어가 있습니다. Databricks는 Hive 메타스토어에서 관리하는 테이블을 Unity 카탈로그 메타스토어로 업그레이드하는 것이 좋습니다.

옵션 1: 연동한 다음 외부 테이블을 업그레이드합니다.

권장되는 방법은 먼저 Hive 메타스토어를 외국 카탈로그로 페더레이션한 다음 외부 테이블을 현재 위치로 업그레이드하는 것입니다. 이 2단계 프로세스를 사용하면 테이블 기록, 구성, 사용 권한 및 뷰를 유지하면서 데이터 이동 없이 테이블을 마이그레이션할 수 있습니다.

먼저 Unity 카탈로그에서 Hive 메타스토어를 외국 카탈로그로 페더레이션합니다. 이를 통해 Unity 카탈로그를 통해 기존 테이블에 액세스할 수 있으며 업그레이드를 준비할 수 있습니다.

Hive 메타스토어를 페더레이션하는 방법에 대한 지침은 Hive 메타스토어 페더레이션을 참조하세요. Unity 카탈로그를 사용하여 Hive 메타스토어에 등록된 테이블을 제어할 수 있습니다.

비고

테이블을 업그레이드하지 않고 페더레이션 카탈로그를 영구적으로 계속 사용하려는 경우 이렇게 할 수 있습니다. 그러나 Databricks는 Unity 카탈로그 기능을 최대한 활용하기 위해 업그레이드를 완료하는 것이 좋습니다.

Hive 메타스토어를 페더레이션한 후에는 데이터 이동 없이 외용 테이블을 Unity 카탈로그 테이블로 업그레이드할 수 있습니다. 이 워크플로는 테이블 기록, 구성, 사용 권한 및 뷰를 유지하면서 테이블을 현재 위치로 업그레이드합니다.

외용 테이블을 Unity 카탈로그 관리 테이블로 업그레이드하려면 다음 명령을 실행합니다.

ALTER TABLE <foreign_catalog>.<schema>.<table_name> SET MANAGED;

Databricks는 자동 유지 관리(압축, 클러스터링, 진공 처리) 및 성능 향상을 포함하는 Unity 카탈로그 예측 최적화의 잠금을 해제하기 위해 관리되는 테이블로 업그레이드하는 것이 좋습니다. 대신 외용 테이블을 Unity 카탈로그 외부 테이블로 업그레이드하려면 다음 명령을 실행합니다.

ALTER TABLE <foreign_catalog>.<schema>.<table_name> SET EXTERNAL;

테이블을 마이그레이션하고 더 이상 외부 카탈로그에 대한 페더레이션을 사용하지 않으면 연결을 제거할 수 있습니다.

ALTER CATALOG <foreign_catalog> DROP CONNECTION;

이 워크플로에 대한 자세한 내용은 외용 테이블을 관리되는 Unity 카탈로그 테이블로 변환을 참조하세요.

옵션 2: 테이블을 직접 업그레이드

페더레이션 기반 업그레이드 워크플로를 사용하지 않도록 선택한 경우 테이블을 직접 사용 SYNC 하거나 CREATE TABLE AS SELECT업그레이드할 수 있습니다. Hive 테이블 및 뷰를 Unity 카탈로그로 업그레이드를 참조 하세요.

업그레이드되거나 페더레이션된 테이블에 대한 액세스 권한 부여

계정 수준 사용자, 그룹 또는 서비스 주체에게 새 테이블에 대한 액세스 권한을 부여합니다. Unity 카탈로그에서 권한 관리을 참조하세요.

업그레이드된 테이블 및 데이터 경로로 작업하도록 쿼리 및 작업 업데이트

작업 영역 로컬 Hive 메타스토어에서 Unity 카탈로그로 전환하는 동안 Hive 메타스토어 페더레이션(권장) 또는 Unity 카탈로그와 함께 레거시 Hive 메타스토어 작업에서 설명하는 구문을 사용하여 Hive 메타스토어에 등록된 데이터를 참조하는 쿼리 및 작업을 계속 사용할 수 있습니다. 그러나 결국 Unity 카탈로그 테이블 및 구문을 사용하도록 모든 쿼리와 작업을 업데이트해야 합니다.

마찬가지로 파일에 대한 경로 기반 액세스를 사용하는 쿼리 및 작업을 업데이트하여 Unity 카탈로그 볼륨을 대신 사용합니다.

자세한 권장 사항은 레거시 작업 영역을 Unity 카탈로그로 업그레이드할 때 작업 업데이트를 참조하세요.

DBFS에 대한 액세스 사용 안 함

Unity 카탈로그 마이그레이션의 일환으로 Databricks는 작업 영역에서 DBFS에 대한 액세스를 사용하지 않도록 설정하는 것이 좋습니다. 이렇게 하면 모든 데이터와 워크플로가 Unity 카탈로그에 의해 관리되고 Unity 카탈로그 기능을 최대한 활용할 수 있습니다.

Databricks Labs의 DBFS 스캐너 스크립트 를 사용하여 현재 DBFS 사용량을 검사하고 자산을 현재 위치에 등록할지(외부 위치 사용), Unity 카탈로그로 마이그레이션할지 또는 더 이상 필요하지 않은 경우 보관할지 각각 결정할 수 있습니다. Databricks Labs는 Databricks에서 직접 지원되지 않는 공용 GitHub 리포지토리입니다.

다음 섹션에서는 DBFS에서 Unity 카탈로그로 다양한 자산을 마이그레이션하는 방법을 설명합니다.

DBFS에 저장된 파일 마이그레이션

Parquet, CSV, JSON 또는 이미지와 같은 원시 파일이 DBFS 루트(예: DBFS 루트 디렉터리 아래 /FileStore 또는 다른 DBFS 루트 디렉터리) 또는 클라우드 스토리지에 저장된 경우(아래 /mnt/...) Unity 카탈로그 볼륨을 사용하여 마이그레이션하고 외부 위치를 사용하여 액세스합니다.

다음 단계에서는 DBFS에서 Unity 카탈로그 볼륨으로 파일을 마이그레이션하는 방법을 설명합니다. 볼륨과 작업 영역 파일을 사용하는 시기에 대한 자세한 내용은 볼륨 및 작업 영역 파일 의 파일에 대한 권장 사항을 참조하세요.

1단계: 외부 위치 설정

Unity 카탈로그에 자산을 등록하려면 파일이 현재 있는 클라우드 스토리지 컨테이너 또는 경로에 대한 Unity 카탈로그 외부 위치를 설정합니다. 카탈로그 탐색기, SQL 명령, Terraform 또는 Azure Databricks CLI를 사용하여 이 작업을 수행할 수 있습니다.

자세한 지침은 Unity 카탈로그를 사용하여 클라우드 개체 스토리지에 연결을 참조하세요.

2단계: 볼륨 만들기

Unity 카탈로그 볼륨은 파일을 구성하는 관리되는 방법을 제공합니다. Databricks는 볼륨을 사용하여 테이블 형식이 아닌 모든 데이터를 제어하는 것이 좋습니다. 외부 위치의 하위 경로를 참조하는 외부 볼륨을 스키마에 만들 수 있습니다. 다음은 그 예입니다.

USE CATALOG main;
USE SCHEMA data;
CREATE VOLUME IF NOT EXISTS raw_files
LOCATION 'my_data_loc/csv-files/';

이제 해당 경로 아래의 모든 파일에 외부 위치를 통해 액세스할 수 있으며 Unity 카탈로그 권한으로 제어됩니다.

자세한 내용은 Unity 카탈로그의 볼륨은 무엇인가요?.

3단계: DBFS 루트에서 파일 복사

파일이 이전에 DBFS 루트에 저장된 경우 클라우드 스토리지 경로에 복사합니다. 예를 들어, 노트북에서는 다음과 같이 합니다.

dbutils.fs.cp(
  "dbfs:/FileStore/tables/data.csv",
  "/Volumes/main/data/raw_files/data.csv"
)

팁 (조언)

몇 GB보다 큰 파일 또는 파일이 많은 경우 Apache Spark를 사용하여 Azure Databricks CLI 또는 분산 복사본을 사용하여 이동을 병렬화하는 것이 좋습니다. Azure Databricks CLI fs cp 명령은 디렉터리를 재귀적으로 복사할 수 있습니다.

4단계: 마이그레이션된 파일 확인

마이그레이션한 후 표준 명령을 사용하여 볼륨에서 파일을 나열하고 읽습니다.

# List files in the volume
dbutils.fs.ls("/Volumes/main/data/raw_files/")

# Read a CSV file into a DataFrame
df = spark.read.option("header", True).csv(
  "/Volumes/main/data/raw_files/2024-01-01-data.csv"
)

이 코드에는 볼륨 또는 외부 위치에 대한 적절한 Unity 카탈로그 권한과 Unity 카탈로그를 지원하는 컴퓨팅 리소스가 필요합니다. Unity 카탈로그는 파일을 읽는 주체가 볼륨 또는 외부 위치에 대한 READ 사용 권한을 가지고 있어야 한다는 것을 강제합니다.

5단계: DBFS 마운트 정리

새 위치에 있는 파일에 액세스할 수 있는지 확인한 후 이전 DBFS 탑재를 분리하여 혼동 또는 실수로 사용하는 것을 방지합니다.

dbutils.fs.unmount("/mnt/oldpath")

DBFS 루트가 이동된 경우 데이터를 잠그거나 삭제하는 것이 좋습니다. 복사본을 남겨 두면 업데이트 또는 보안 위험이 일관되지 않게 될 수 있기 때문입니다.

DBFS에서 작업 영역 자산 마이그레이션

일부 작업 영역에는 DBFS에 저장된 Notebook, 코드 파일 또는 참조 스크립트가 있습니다. 여기에는 다음이 포함될 수 있습니다.

  • 공유를 위해 HTML 또는 DBC 파일 /FileStore 로 저장된 Notebook
  • Azure Databricks 작업에 사용되는 Python 스크립트 또는 JAR 파일
  • 컴퓨팅 범위 초기화 스크립트(예: dbfs:/databricks/init/...)

Notebook 및 코드는 DBFS가 아닌 작업 영역 파일 또는 Git 폴더에 저장해야 합니다. DBFS는 파일당 액세스 제어를 제공하지 않으며 소스 코드 또는 Notebook에 사용해서는 안 됩니다.

  • Notebooks: DBFS에 파일로 Notebook이 있는 경우 Azure Databricks 작업 영역으로 가져옵니다. UI의 가져오기 함수를 사용하거나 CLI를 사용하여 수동으로 이 작업을 수행할 수 있습니다. 작업 영역 의 Notebook 권한이 팀 액세스에 적절하게 설정되어 있는지 확인합니다. 앞으로 Notebook을 작업 영역 개체 또는 Git 폴더에 저장하고 버전 제어에 Git을 사용합니다.
  • 작업 스크립트: 작업이 DBFS에서 Python 스크립트를 실행하도록 구성된 경우(예: 작업 유형이 "Python 스크립트"를 참조하는 dbfs:/mnt/scripts/my_etl.py작업) 해당 스크립트를 작업 영역 파일로 이동합니다. 버전 제어 및 변경 내용 추적을 위해 Git 폴더에서 관리합니다.
  • 빌드 아티팩트 및 라이브러리: JAR 파일 및 Python 휠과 같은 자산을 Unity 카탈로그 볼륨에 저장해야 합니다.
  • 컴퓨팅 범위 init 스크립트: 컴퓨팅 범위 init 스크립트는 Unity 카탈로그 볼륨에 저장해야 합니다. init 스크립트란?을 참조하세요.

지원되는 Databricks 런타임 버전 및 액세스 모드로 컴퓨팅 찾기 및 마이그레이션

비고

이 섹션에는 테이블에 액세스하는 쿼리가 system.compute.clusters 포함되어 있습니다. 이 시스템 테이블에 액세스하려면 Azure Databricks 계정 관리자이거나 시스템 스키마에 대한 USE 권한이 부여 SELECTcompute 되어 있어야 합니다. 시스템 테이블에 대한 액세스 권한 부여를 참조하세요.

Unity 카탈로그 마이그레이션의 일환으로 Databricks는 모든 컴퓨팅 및 작업을 Databricks Runtime 13.3 LTS 이상으로 업그레이드하고 Unity 카탈로그 액세스 모드를 사용하는 것이 좋습니다.

작업 영역에서 컴퓨팅을 수동으로 검토하려면 작업 영역의 컴퓨팅 페이지로 이동합니다. 다목적 컴퓨팅 섹션에서 각 컴퓨팅의 Databricks 런타임 버전을 검토합니다. 버전별로 정렬 또는 필터링하여 13.3 LTS 미만 버전을 실행하는 클러스터를 식별합니다. 특정 Databricks 런타임 버전을 사용하도록 작업을 구성할 수도 있으므로 작업 컴퓨팅 섹션에 대해 반복합니다.

프로그래밍 방식으로 13.3 LTS 미만의 컴퓨팅 실행 버전을 찾으려면 테이블을 쿼리합니다 system.compute.clusters . 다음은 그 예입니다.

SELECT
  workspace_id,
  cluster_id,
  dbr_version
FROM system.compute.clusters
WHERE
  TRY_CAST(SPLIT(dbr_version, '\\.')[0] AS INT) < 13
  OR (
    TRY_CAST(SPLIT(dbr_version, '\\.')[0] AS INT) = 13
    AND TRY_CAST(SPLIT(dbr_version, '\\.')[1] AS INT) < 3
  );

그러면 13.3 LTS 미만 버전을 실행하는 다목적 컴퓨팅 및 작업 컴퓨팅 리소스 목록이 반환됩니다.

컴퓨팅을 지원되는 액세스 모드로 업그레이드

여전히 격리되지 않은 공유 액세스 모드에서 컴퓨팅을 실행하는 경우 지원되는 액세스 모드로 업그레이드할 수 있습니다. 액세스 모드를 참조하세요. 격리되지 않은 공유 액세스 모드에서 실행되는 컴퓨팅을 쿼리하려면 테이블을 쿼리합니다 system.compute.clusters . 다음은 그 예입니다.

SELECT
  workspace_id,
  cluster_id,
  dbr_version,
  data_security_mode
FROM system.compute.clusters
WHERE data_security_mode IN ('NONE','NO_ISOLATION')
LIMIT 100;

작업 영역에서 레거시 기능에 대한 액세스 사용 안 함

위의 마이그레이션 단계를 완료한 후에는 작업 영역의 레거시 기능에 대한 액세스를 사용하지 않도록 설정할 수 있습니다.