Databricks Unity Catalog용 크로스 클라우드 Lakehouse 설정

이 문서에서는Google Cloud내에서 Databricks Unity Catalog 카탈로그의 데이터를 직접 쿼리할 수 있도록 크로스 클라우드 레이크하우스를 설정하는 방법을 설명합니다. 이 기능을 사용하면 외부 데이터 소스를 기존Google Cloud 환경과 통합하여 데이터 분석을 통합할 수 있습니다.

그런 다음 Lakehouse for Apache Iceberg를 사용하여 페더레이션 데이터에 대한 액세스를 관리할 수 있습니다.

시작하기 전에

  1. 레이크하우스 개요를 검토하여 레이크하우스가 데이터 액세스를 관리하는 방법을 알아보세요.
  2. 크로스 클라우드 레이크하우스 정보를 읽고 작동 방식을 이해합니다.
  3. 지원되는 카탈로그를 검토하여 외부 위치 요구사항과 지원되는 구성을 확인합니다.
  4. 리전 Secret Manager 보안 비밀을 사용하는 방법을 이해합니다. 이는 보안 비밀 기반 인증을 사용하여 Databricks Unity Catalog로 크로스 클라우드 Lakehouse를 설정하는 데 필요합니다.
  5. 타겟 카탈로그에 대한 읽기 액세스 권한이 있는 원격 카탈로그 제공자 내에서 OAuth 서비스 주체 (클라이언트 ID 및 선택적으로 클라이언트 보안 비밀번호)를 생성합니다. 이 프로세스는 이 문서에서 다루지 않습니다.
  6. 선택사항: Google Cloud VPC와 원격 클라우드 제공업체의 VPC (예: AWS) 간의 비공개 인터커넥트를 통해 쿼리를 라우팅하려는 경우 원격 제공업체에 활성 계정이 있고, 크로스 클라우드 인터커넥트 또는 파트너 인터커넥트를 프로비저닝하고, Cloud Router와 BGP 세션을 설정하고, 두 클라우드 환경 모두에 필요한 IAM 권한이 있는지 확인합니다.
  7. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  8. Verify that billing is enabled for your Google Cloud project.

  9. Enable the BigLake, Secret Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  10. Verify that billing is enabled for your Google Cloud project.

  11. Enable the BigLake, Secret Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

필요한 역할

크로스 클라우드 레이크하우스를 설정하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

  • 레이크하우스 카탈로그 관리: BigLake 관리자 (roles/biglake.admin)
  • 보안 비밀 관리: Secret Manager 관리자 (roles/secretmanager.admin) (보안 비밀 기반 인증을 사용하는 경우에만 필요)
  • 비공개 상호 연결을 통해 트래픽 라우팅: Compute 네트워크 관리자 (roles/compute.networkAdmin), 서비스 디렉터리 뷰어 (roles/servicedirectory.viewer), 서비스 디렉터리 PSC 승인 서비스 (roles/servicedirectory.pscAuthorizedService)

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

지원되는 카탈로그 세부정보

이 가이드에서는 Amazon Web Services (AWS) 또는 Google Cloud에서 Databricks Unity Catalog 카탈로그를 사용하여 교차 클라우드 레이크하우스를 설정하는 방법을 설명합니다. 외부 위치 요구사항 및 지원되는 구성에 관한 자세한 내용은 지원되는 카탈로그를 참고하세요.

제한사항 및 고려사항

이 섹션에는 크로스 클라우드 레이크하우스 사용에 관한 제한사항과 고려사항이 나와 있습니다.

  • 지원되는 클라우드 제공업체: 교차 클라우드 Lakehouse와의 비공개 인터커넥트는 Amazon Web Services (AWS)와 같은 원격 클라우드 제공업체에서 지원됩니다. 교차 클라우드 인터커넥트 또는 파트너 인터커넥트를 사용할 수 있습니다.
  • AWS의 외부 위치 또는 Google Cloud의 외부 위치를 사용하는 Databricks Unity Catalog 카탈로그만 지원됩니다. AWS의 기본 스토리지 또는 Google Cloud의 기본 스토리지를 사용하는 Unity Catalog 카탈로그는 지원되지 않습니다.
  • 기본적으로 사용 중지되어 있는 Unity Catalog에서 사용하는 메타스토어에서 외부 데이터 액세스를 사용 설정해야 합니다.
  • 네트워크 라우팅: 비공개 인터커넥트 (예: 고객 소유 CCI 또는 Partner Interconnect)가 구성되지 않은 경우 쿼리는 공용 인터넷을 통해 라우팅됩니다. 이로 인해 원격 클라우드 제공업체에서 이그레스 요금이 더 많이 청구되고 성능을 예측하기 어려워질 수 있습니다.
  • 데이터 최신성: 제휴 카탈로그의 --refresh-interval 플래그는 메타데이터가 동기화되는 빈도를 결정합니다. 간격이 짧을수록 최신 데이터가 제공되지만 원격 카탈로그 제공업체에서 추가 API 비용이 발생할 수 있습니다.
  • Iceberg 측정항목 보고: Iceberg 측정항목 보고는 페더레이션 카탈로그에서 사용할 수 없습니다. 제휴 카탈로그에 액세스할 때 Iceberg 클라이언트에서 rest-metrics-reporting-enabled 속성을 false로 설정합니다.

일반 워크플로

크로스 클라우드 레이크하우스를 설정하고 사용하려면 다음 일반 단계를 따르세요.

  • Cross-Cloud Interconnect 설정 (선택사항): Google Cloud VPC와 원격 클라우드 제공업체 간에 비공개 연결을 구성합니다.
  • 제휴 설정: 인증을 구성하고 Lakehouse에서 제휴 카탈로그를 만듭니다.
    • OpenID Connect (OIDC) (권장): 원격 서비스 주체 애플리케이션 ID를 지정하여 Lakehouse에 제휴 카탈로그를 만든 다음 Lakehouse 카탈로그 서비스 계정의 고유 ID를 사용하여 Databricks에서 제휴 정책을 구성합니다.
    • 보안 비밀 기반 인증: 원격 카탈로그 사용자 인증 정보를 사용하여 Secret Manager에서 보안 비밀을 만듭니다. 그런 다음 Lakehouse에서 페더레이션 카탈로그를 만들고 카탈로그 서비스 계정에 보안 비밀에 대한 액세스 권한을 부여합니다.
  • 연결 확인: Lakehouse가 원격 카탈로그에 성공적으로 연결할 수 있는지 확인합니다.
  • 데이터 쿼리: BigQuery 또는 Managed Service for Apache Spark를 사용하여 페더레이션된 데이터에 대해 쿼리를 실행합니다. 자세한 내용은 크로스 클라우드 Lakehouse 사용을 참고하세요.
  • 권한 구성: Identity and Access Management (IAM)를 사용하여 제휴 데이터를 보고 쿼리할 수 있는 사용자를 관리합니다.

Cross-Cloud Interconnect 설정 (선택사항)

원격 카탈로그에 대한 쿼리는 기본적으로 공개 인터넷을 통해 이동합니다. 보안 및 규정 준수를 강화하고, 예측 가능한 성능을 제공하며, 데이터 전송 비용을 줄이려면 비공개 인터커넥트를 사용하세요. 이렇게 하면 Google Cloud가상 프라이빗 클라우드 (VPC)와 원격 클라우드 제공업체의 네트워크 (예: AWS) 간에 전용 비공개 네트워크 연결이 설정됩니다.

Google Cloud VPC와 원격 클라우드 제공업체의 VPC(예: AWS) 간에 다음 비공개 인터커넥트 옵션 중 하나를 프로비저닝하고 구성할 수 있습니다.

경로 교환을 위해 Google Cloud 의 Cloud Router와 원격 클라우드 제공업체의 VPC 간에 BGP 세션을 설정합니다.

비공개 쿼리를 사용 설정하려면 비공개 상호 연결을 통해 Lakehouse에서 원격 스토리지 버킷 (예: AWS Amazon S3 버킷)으로의 경로를 구성해야 합니다. 이 라우팅을 구성하기 위해 따를 수 있는 두 가지 아키텍처 흐름이 있습니다.

  • 내부 리전 프록시 네트워크 부하 분산기 라우팅: 이 흐름에서는Google Cloud 내부 리전 프록시 네트워크 부하 분산기를 사용하여 여러 AWS 탄력적 네트워크 인터페이스 (ENI)를 가리키는 하이브리드 연결 네트워크 엔드포인트 그룹 (NEG)에 요청을 분산합니다. 이 흐름은 부하 분산, 확장성, 고가용성에 필수적입니다. Partner Interconnect에 필요하며, 부하 분산, 확장성, 고가용성을 위해 Cross-Cloud Interconnect에 권장됩니다.
  • 직접 엔드포인트 라우팅: 이 흐름은 서비스 디렉터리를 단일 AWS 인터페이스 VPC 엔드포인트 IP 주소에 직접 연결합니다. 이 흐름은 Cross-Cloud Interconnect에서만 작동하며 Partner Interconnect에서는 지원되지 않습니다.

아키텍처 요구사항에 맞는 구성 흐름을 선택합니다.

내부 리전 프록시 네트워크 부하 분산기

고가용성 및 부하 분산을 위해 여러 AWS ENI에 요청을 분산하도록 내부 리전 프록시 네트워크 부하 분산기를 구성하려면 다음 단계를 따르세요.

AWS 네트워킹 구성

먼저 Amazon S3 VPC 인터페이스 엔드포인트 (AWS PrivateLink)를 만듭니다.

  1. AWS VPC 콘솔에서 Amazon S3의 인터페이스 엔드포인트를 만듭니다.
  2. 서비스 이름으로 com.amazonaws.<var>AWS_REGION</var>.s3를 지정합니다.
  3. Direct Connect를 통해 Google Cloud VPC에 연결된 VPC 및 서브넷을 선택합니다.
  4. 인바운드 액세스를 제어하기 위해 엔드포인트에 보안 그룹을 연결합니다.
  5. 이렇게 하면 선택한 각 서브넷에 탄력적 네트워크 인터페이스 (ENI)가 프로비저닝됩니다. 이러한 ENI의 비공개 IP 주소를 확인합니다.

다음으로 보안 그룹을 구성합니다.

  • Amazon S3 엔드포인트 ENI에 연결된 보안 그룹이 Google Cloud VPC의 관련 IP 범위에서 포트 443의 인바운드 TCP 트래픽을 허용하는지 확인합니다.

네트워킹 Google Cloud 구성

안내에 따라 하이브리드 엔드포인트용 내부 리전 프록시 네트워크 부하 분산기를 설정합니다.

안내를 따를 때는 다음 사항을 확인하세요.

  • 하이브리드 연결 NEG (NON_GCP_PRIVATE_IP_PORT)를 만들고 이전에 만든 AWS ENI의 비공개 IP 주소를 추가합니다.
  • NEG, 상태 점검, 전달 규칙에 TCP 포트 443를 사용합니다.
  • 연합 카탈로그와 동일한 Google Cloud 리전에 부하 분산기를 설정합니다.

부하 분산기의 전달 규칙을 만든 후 부하 분산기에 할당된 내부 IP 주소를 확인합니다. ILB_IP_ADDRESS입니다.

서비스 디렉터리 구성

Lakehouse가 검색할 수 있도록 서비스 디렉터리에 ILB의 IP 주소를 등록합니다.

  1. 원격 클라우드의 네임스페이스를 만듭니다.

    gcloud service-directory namespaces create NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION

    다음을 바꿉니다.

    • NAMESPACE: 네임스페이스의 고유 식별자입니다.
    • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
    • REGION: Google Cloud 리전입니다. 예를 들면 us-east4입니다. 이 리전은 제휴 카탈로그와 동일한 리전이어야 합니다.
  2. 서비스 디렉터리 네임스페이스에서 서비스를 만듭니다.

    gcloud service-directory services create SERVICE_NAME \
        --namespace=NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION

    다음을 바꿉니다.

    • SERVICE_NAME: 서비스의 고유 식별자입니다.
  3. 서비스에서 ILB의 엔드포인트를 만듭니다.

    gcloud service-directory endpoints create ENDPOINT_NAME \
        --project=PROJECT_ID \
        --namespace=NAMESPACE \
        --service=SERVICE_NAME \
        --location=REGION \
        --network=projects/PROJECT_NUMBER/global/networks/VPC_NETWORK \
        --address=ILB_IP_ADDRESS \
        --port=443

    다음을 바꿉니다.

    • ENDPOINT_NAME: 엔드포인트의 고유 식별자입니다.
    • PROJECT_NUMBER: Google Cloud프로젝트 번호 --network 플래그에 프로젝트 번호를 사용합니다.
    • ILB_IP_ADDRESS: ILB 전달 규칙의 내부 IP 주소입니다.

직접 엔드포인트

트래픽을 단일 AWS 인터페이스 VPC 엔드포인트 IP 주소로 직접 라우팅하도록 서비스 디렉터리를 구성하려면 다음 단계를 따르세요.

  1. AWS VPC 내에서 Amazon S3용 인터페이스 VPC 엔드포인트를 만듭니다. 이 엔드포인트의 IP 주소와 포트를 기록해 둡니다.
  2. 원격 클라우드의 네임스페이스를 만듭니다.

    gcloud service-directory namespaces create NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION

    다음을 바꿉니다.

    • NAMESPACE: 네임스페이스의 고유 식별자입니다.
    • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
    • REGION: Google Cloud 리전입니다. 예를 들면 us-east4입니다. 이 리전은 제휴 카탈로그와 동일한 리전이어야 합니다.
  3. 서비스 디렉터리 네임스페이스에서 서비스를 만듭니다.

    gcloud service-directory services create SERVICE_NAME \
        --namespace=NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION

    다음을 바꿉니다.

    • SERVICE_NAME: 서비스의 고유 식별자입니다.
  4. Amazon S3 인터페이스 VPC 엔드포인트의 라우팅 정보가 포함된 서비스에 엔드포인트를 만듭니다.

    gcloud service-directory endpoints create ENDPOINT_NAME \
        --service=SERVICE_NAME \
        --namespace=NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION \
        --address=S3_VPCE_IP_ADDRESS \
        --port=S3_VPCE_PORT \
        --network=projects/PROJECT_NUMBER/global/networks/VPC_NETWORK

    다음을 바꿉니다.

    • ENDPOINT_NAME: 엔드포인트의 고유 식별자입니다.
    • S3_VPCE_IP_ADDRESS: Amazon S3 인터페이스 VPC 엔드포인트의 IP 주소입니다. 예를 들면 10.0.1.45입니다.
    • S3_VPCE_PORT: Amazon S3 인터페이스 VPC 엔드포인트의 포트 번호입니다. 예를 들면 443입니다.
    • PROJECT_NUMBER: Google Cloud프로젝트 번호 --network 플래그에 프로젝트 번호를 사용합니다.
    • VPC_NETWORK: 비공개 인터커넥트와 연결된 Google Cloud VPC 네트워크 이름입니다.

제휴 설정

데이터를 쿼리하려면 원격 카탈로그에 연결되는 Lakehouse 페더레이션 카탈로그를 설정해야 합니다.

인증 구성

연동에는 원격 카탈로그에 액세스할 수 있는 사용자 인증 정보가 필요합니다. 다음 인증 옵션 중 하나를 선택하여 사용자 인증 정보를 준비합니다.

옵션 A: OIDC

OpenID Connect (OIDC)를 사용하면 레이크하우스와 Databricks 간에 신뢰 관계를 설정하여 비밀번호 없는 인증이 가능합니다.

  1. 타겟 Unity Catalog 카탈로그에 대한 읽기 액세스 권한이 있는 서비스 주체를 Databricks 계정에 만듭니다.
  2. 서비스 주 구성원의 애플리케이션 ID (UUID)를 가져옵니다. 다음 단계에서 필요합니다.

옵션 B: 비밀 기반

이 옵션은 지역 Secret Manager 보안 비밀을 사용하여 안전하게 저장된 OAuth 클라이언트 ID 및 클라이언트 보안 비밀번호를 사용합니다.

  1. 페이로드가 포함된 credentials.json이라는 JSON 파일을 만듭니다.

    {
    "client_id": "CLIENT_ID",
    "client_secret": "CLIENT_SECRET"
    }

    다음을 바꿉니다.

    • CLIENT_ID: Databricks 서비스 주체의 OAuth 클라이언트 ID입니다.
    • CLIENT_SECRET: Databricks 서비스 주체의 OAuth 클라이언트 보안 비밀번호입니다.
  2. Secret Manager의 리전 엔드포인트를 구성합니다.

    기본적으로 Secret Manager는 전역 엔드포인트를 사용합니다. 하지만 크로스 클라우드 Lakehouse를 사용하려면 비밀이 Lakehouse 카탈로그와 동일한 리전에 저장되어야 합니다. gcloud CLI를 사용하여 리전별 보안 비밀과 상호작용하려면 현재 세션 또는 프로필의 기본 API 엔드포인트를 재정의해야 합니다. 연결 문제를 방지하려면 비밀과 카탈로그를 동일한 리전에서 만들어야 합니다. 예를 들면 secretmanager.us-east4.rep.googleapis.com입니다.

    gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/

    다음을 바꿉니다.

    • REGION: Secret Manager 보안 비밀이 저장된 Google Cloud 리전입니다. 예를 들면 us-east4입니다. 연결 문제를 방지하려면 보안 비밀과 카탈로그를 동일한 리전에서 만들어야 합니다. 예를 들면 secretmanager.us-east4.rep.googleapis.com입니다.
  3. 페이로드를 Secret Manager에 업로드합니다.

    gcloud secrets create DATABRICKS_SECRET_NAME \
    --location="REGION" \
    --project="PROJECT_ID" \
    --data-file=credentials.json

    다음을 바꿉니다.

    • DATABRICKS_SECRET_NAME: Databricks 보안 비밀의 이름입니다.

제휴 카탈로그 만들기

gcloud biglake iceberg catalogs create 명령어를 사용하여 연합 카탈로그를 만듭니다.

콘솔

보안 비밀 기반 인증을 사용하여 제휴 카탈로그를 만들려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 Lakehouse로 이동합니다.

    레이크하우스로 이동

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

  3. 제휴 카탈로그를 클릭합니다.

    카탈로그 구성 세부정보가 표시됩니다.

  4. 제휴 카탈로그 소스에서 Unity (Databricks)를 선택합니다.

  5. 데이터 위치에서 페더레이션 카탈로그를 만들 Lakehouse 리전을 선택합니다. 예를 들면 us-east4입니다. 지연 시간 (공용 인터넷을 통한 경우에도)을 최소화하려면 리전을 선택할 때 다음 단계를 따르세요.

    • Unity Catalog 카탈로그가 AWS에 있는 경우 AWS 리전에 가장 가까운Google Cloud 리전을 선택합니다.
    • Unity Catalog 카탈로그가 Google Cloud에 있는 경우 정확히 동일한 리전을 선택합니다.
  6. 계속을 클릭합니다.

    연결 세부정보가 표시됩니다.

  7. 원격 카탈로그 세부정보 섹션의 Unity 인스턴스 이름 필드에 타겟 Databricks 인스턴스 이름을 입력합니다. 예를 들면 abcd.cloud.databricks.com입니다.

  8. Unity Catalog 이름 필드에 제휴할 타겟 Databricks Unity Catalog 카탈로그의 이름을 입력합니다.

  9. 인증 및 네트워크 섹션의 보안 비밀 필드에 Databricks 보안 비밀의 이름을 입력합니다. 다음 형식을 사용합니다. projects/PROJECT_ID/locations/REGION/secrets/DATABRICKS_SECRET_NAME

  10. 선택사항: 서비스 디렉터리 이름 필드에 서비스 디렉터리 서비스의 경로를 입력합니다. 예를 들면 projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE_NAME입니다. Cross-Cloud Interconnect를 구성하는 경우에만 필요합니다.

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

gcloud CLI

옵션 A: OIDC

OIDC를 사용하는 경우 토큰 교환을 사용하여 연결이 인증됩니다. unity-service-principal-application-id을 제공해야 합니다.

공개 인터넷 (CCI 없음)

gcloud biglake iceberg catalogs create FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --primary-location="REGION" \
    --catalog-type="federated" \
    --federated-catalog-type="unity" \
    --unity-service-principal-application-id="UNITY_SERVICE_PRINCIPAL_APPLICATION_ID" \
    --unity-instance-name="UNITY_INSTANCE_NAME" \
    --unity-catalog-name="UNITY_CATALOG_NAME" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS"

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • REGION: 제휴 카탈로그가 생성된 Lakehouse 리전입니다. 예를 들면 us-east4입니다. 지연 시간을 최소화하려면 리전을 선택할 때 다음을 수행하세요.
    • Unity Catalog 카탈로그가 AWS에 있는 경우 AWS 리전에 가장 가까운Google Cloud 리전을 선택합니다.
    • Unity Catalog 카탈로그가 Google Cloud에 있는 경우 정확히 동일한 리전을 선택합니다.
  • UNITY_SERVICE_PRINCIPAL_APPLICATION_ID: Databricks 서비스 주 구성원의 애플리케이션 ID (UUID)입니다.
  • UNITY_INSTANCE_NAME: 대상 Databricks 인스턴스 이름입니다. 예를 들면 abcd.cloud.databricks.com입니다.
  • UNITY_CATALOG_NAME: 제휴할 대상 Databricks Unity Catalog 카탈로그의 이름입니다.
  • REFRESH_INTERVAL: 카탈로그 정보를 업데이트하는 빈도를 지정합니다. 이 값을 기간으로 설정합니다(예: 330s 또는 5m30s). 간격이 짧을수록 데이터가 더 자주 업데이트되지만 API 호출 비용이 더 많이 들 수 있습니다. 간격이 길면 비용이 절감될 수 있지만 쿼리된 데이터가 최신 데이터 세트를 반영하지 않을 수 있습니다. 생략하거나 값을 0s로 설정하면 업데이트가 사용 중지됩니다.
  • NAMESPACE_FILTERS: 선택사항: 페더레이션할 네임스페이스의 쉼표로 구분된 목록입니다. 예를 들면 ns1,ns2입니다. 생략하면 모든 네임스페이스가 포함됩니다.

고객 소유 (CCI)

비공개 상호 연결 (예: 전용 CCI 또는 Partner Interconnect)을 구성한 경우 Lakehouse가 비공개로 트래픽을 라우팅할 수 있도록 서비스 디렉터리 서비스 참조를 제공하세요.

gcloud biglake iceberg catalogs create FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --primary-location="REGION" \
    --catalog-type="federated" \
    --federated-catalog-type="unity" \
    --unity-service-principal-application-id="UNITY_SERVICE_PRINCIPAL_APPLICATION_ID" \
    --unity-instance-name="UNITY_INSTANCE_NAME" \
    --unity-catalog-name="UNITY_CATALOG_NAME" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS" \
    --service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE_NAME"

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호
  • REGION: 제휴 카탈로그가 생성된 Lakehouse 리전입니다. 예를 들면 us-east4입니다. 지연 시간을 최소화하려면 리전을 선택할 때 다음을 수행하세요.
    • Unity Catalog 카탈로그가 AWS에 있는 경우 AWS 리전에 가장 가까운Google Cloud 리전을 선택합니다.
    • Unity Catalog 카탈로그가 Google Cloud에 있는 경우 정확히 동일한 리전을 선택합니다. 참고: 서비스 디렉터리 네임스페이스 및 리전 보안 비밀과 동일한 리전이어야 합니다.
  • UNITY_SERVICE_PRINCIPAL_APPLICATION_ID: Databricks 서비스 주 구성원의 애플리케이션 ID (UUID)입니다.
  • UNITY_INSTANCE_NAME: 대상 Databricks 인스턴스 이름입니다. 예를 들면 abcd.cloud.databricks.com입니다.
  • UNITY_CATALOG_NAME: 제휴할 대상 Databricks Unity Catalog 카탈로그의 이름입니다.
  • REFRESH_INTERVAL: 카탈로그 정보를 업데이트하는 빈도를 지정합니다. 이 값을 기간으로 설정합니다(예: 330s 또는 5m30s). 간격이 짧을수록 데이터가 더 자주 업데이트되지만 API 호출 비용이 더 많이 들 수 있습니다. 간격이 길면 비용이 절감될 수 있지만 쿼리된 데이터가 최신 데이터 세트를 반영하지 않을 수 있습니다. 생략하거나 값을 0s로 설정하면 업데이트가 사용 중지됩니다.
  • NAMESPACE_FILTERS: 선택사항: 페더레이션할 네임스페이스의 쉼표로 구분된 목록입니다. 예를 들면 ns1,ns2입니다. 생략하면 모든 네임스페이스가 포함됩니다.
  • NAMESPACE: 비공개 인터커넥트 설정 중에 만든 서비스 디렉터리 네임스페이스입니다.
  • SERVICE_NAME: 비공개 인터커넥트 설정 중에 만든 서비스 디렉터리 서비스 이름입니다.

옵션 B: 비밀 기반

보안 비밀 기반 인증을 사용하는 경우 secret-name를 제공해야 합니다.

공개 인터넷 (CCI 없음)

gcloud biglake iceberg catalogs create FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --primary-location="REGION" \
    --catalog-type="federated" \
    --federated-catalog-type="unity" \
    --secret-name="projects/PROJECT_ID/locations/REGION/secrets/DATABRICKS_SECRET_NAME" \
    --unity-instance-name="UNITY_INSTANCE_NAME" \
    --unity-catalog-name="UNITY_CATALOG_NAME" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS"

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • REGION: 제휴 카탈로그가 생성된 Lakehouse 리전입니다. 예를 들면 us-east4입니다. 지연 시간을 최소화하려면 리전을 선택할 때 다음을 수행하세요.
    • Unity Catalog 카탈로그가 AWS에 있는 경우 AWS 리전에 가장 가까운Google Cloud 리전을 선택합니다.
    • Unity Catalog 카탈로그가 Google Cloud에 있는 경우 정확히 동일한 리전을 선택합니다.
  • DATABRICKS_SECRET_NAME: Databricks 보안 비밀의 이름
  • UNITY_INSTANCE_NAME: 대상 Databricks 인스턴스 이름입니다. 예를 들면 abcd.cloud.databricks.com입니다.
  • UNITY_CATALOG_NAME: 제휴할 대상 Databricks Unity Catalog 카탈로그의 이름입니다.
  • REFRESH_INTERVAL: 카탈로그 정보를 업데이트하는 빈도를 지정합니다. 이 값을 기간으로 설정합니다(예: 330s 또는 5m30s). 간격이 짧을수록 데이터가 더 자주 업데이트되지만 API 호출 비용이 더 많이 들 수 있습니다. 간격이 길면 비용이 절감될 수 있지만 쿼리된 데이터가 최신 데이터 세트를 반영하지 않을 수 있습니다. 생략하거나 값을 0s로 설정하면 업데이트가 사용 중지됩니다.
  • NAMESPACE_FILTERS: 선택사항: 페더레이션할 네임스페이스의 쉼표로 구분된 목록입니다. 예를 들면 ns1,ns2입니다. 생략하면 모든 네임스페이스가 포함됩니다.

고객 소유 (CCI)

gcloud biglake iceberg catalogs create FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --primary-location="REGION" \
    --catalog-type="federated" \
    --federated-catalog-type="unity" \
    --secret-name="projects/PROJECT_ID/locations/REGION/secrets/DATABRICKS_SECRET_NAME" \
    --unity-instance-name="UNITY_INSTANCE_NAME" \
    --unity-catalog-name="UNITY_CATALOG_NAME" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS" \
    --service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE_NAME"

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호
  • REGION: 제휴 카탈로그가 생성된 Lakehouse 리전입니다. 예를 들면 us-east4입니다. 지연 시간을 최소화하려면 리전을 선택할 때 다음을 수행하세요.
    • Unity Catalog 카탈로그가 AWS에 있는 경우 AWS 리전에 가장 가까운Google Cloud 리전을 선택합니다.
    • Unity Catalog 카탈로그가 Google Cloud에 있는 경우 정확히 동일한 리전을 선택합니다. 참고: 서비스 디렉터리 네임스페이스 및 리전 보안 비밀과 동일한 리전이어야 합니다.
  • DATABRICKS_SECRET_NAME: Databricks 보안 비밀의 이름
  • UNITY_INSTANCE_NAME: 대상 Databricks 인스턴스 이름입니다. 예를 들면 abcd.cloud.databricks.com입니다.
  • UNITY_CATALOG_NAME: 제휴할 대상 Databricks Unity Catalog 카탈로그의 이름입니다.
  • REFRESH_INTERVAL: 카탈로그 정보를 업데이트하는 빈도를 지정합니다. 이 값을 기간으로 설정합니다(예: 330s 또는 5m30s). 간격이 짧을수록 데이터가 더 자주 업데이트되지만 API 호출 비용이 더 많이 들 수 있습니다. 간격이 길면 비용이 절감될 수 있지만 쿼리된 데이터가 최신 데이터 세트를 반영하지 않을 수 있습니다. 생략하거나 값을 0s로 설정하면 업데이트가 사용 중지됩니다.
  • NAMESPACE_FILTERS: 선택사항: 페더레이션할 네임스페이스의 쉼표로 구분된 목록입니다. 예를 들면 ns1,ns2입니다. 생략하면 모든 네임스페이스가 포함됩니다.
  • NAMESPACE: 비공개 인터커넥트 설정 중에 만든 서비스 디렉터리 네임스페이스입니다.
  • SERVICE_NAME: 비공개 인터커넥트 설정 중에 만든 서비스 디렉터리 서비스 이름입니다.

인증 설정 완료

선택한 인증 옵션에 따라 설정을 완료합니다.

옵션 A: OIDC

카탈로그가 생성되면 Lakehouse에서 카탈로그에 고유한 서비스 계정을 프로비저닝합니다. 서비스 계정의 숫자 고유 ID를 가져와 Databricks에서 이를 사용하여 제휴 정책을 구성해야 합니다.

  1. Lakehouse 카탈로그 서비스 계정의 숫자 고유 ID를 가져옵니다.

    gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME 
    --project="PROJECT_ID"
    --location="REGION"
    --format='value(biglake-service-account-id)'

  2. Databricks 계정에서 이전에 만든 서비스 주체의 연합 정책을 구성합니다. 다음 값을 사용합니다.

    • 발급기관 URL: https://accounts.google.com
    • 주체: 이전 단계에서 검색한 Lakehouse 카탈로그 서비스 계정의 숫자 고유 ID입니다.
    • 대상: https://accounts.cloud.databricks.com

    Databricks 서비스 주체에 대상 카탈로그 및 워크스페이스에 대한 읽기 액세스 권한이 있는지 확인합니다.

옵션 B: 비밀 기반

카탈로그가 생성되면 Lakehouse에서 카탈로그의 고유한 서비스 계정을 프로비저닝합니다 (리소스 설명에서 biglake-service-account로 반환됨).

이 튜토리얼의 앞부분에서 만든 보안 비밀에 액세스할 수 있는 권한을 이 서비스 계정에 부여해야 합니다. IAM 정책이 전파되는 데 몇 분 정도 걸릴 수 있습니다.

카탈로그의 서비스 계정에 보안 비밀에 액세스할 수 있는 권한을 부여합니다.

# Required to use regional secrets
gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/
gcloud secrets add-iam-policy-binding DATABRICKS_SECRET_NAME \
--project="PROJECT_ID" \
--location="REGION" \
--member="serviceAccount:$(gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --location="REGION" \
    --format='value(biglake-service-account)')" \
--role="roles/secretmanager.secretAccessor"

연합 카탈로그 서비스 계정에 보안 비밀에 대한 액세스 권한이 있는지 확인하려면 다음 명령어를 실행합니다.

# Required to use regional secrets
gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/
gcloud secrets get-iam-policy DATABRICKS_SECRET_NAME \
   --project="PROJECT_ID" \
   --location="REGION"

출력에서 biglake-service-account 서비스 계정에 roles/secretmanager.secretAccessor 역할이 할당되어 있는지 확인합니다.

연결 확인하기

카탈로그 백그라운드 새로고침 주기가 성공적으로 완료되고 네임스페이스가 동기화되고 있는지 확인합니다.

  1. 새로고침 상태가 성공을 나타내는지 확인합니다.

    gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
      --project="PROJECT_ID" \
      --location="REGION"
  2. 원격 데이터베이스가 동기화된 네임스페이스로 표시되는지 확인합니다.

    gcloud biglake iceberg namespaces list \
      --catalog="FEDERATED_CATALOG_NAME" \
      --project="PROJECT_ID" \
      --location="REGION"

다음 단계