레이크하우스 페더레이션이란?
이 문서에서는 Azure Databricks를 사용하여 여러 외부 데이터 원본에 대해 쿼리를 실행할 수 있는 쿼리 페더레이션 플랫폼인 Lakehouse Federation을 소개합니다. 또한 Lakehouse 페더레이션 연결을 설정하고 Unity 카탈로그 메타스토어에서 외국 카탈로그를 만드는 방법에 대해서도 설명합니다.
레이크하우스 페더레이션이란?
Lakehouse Federation은 Azure Databricks에 대한 쿼리 페더레이션 플랫폼입니다. 쿼리 페더레이션이라는 용어는 모든 데이터를 통합 시스템으로 마이그레이션할 필요 없이 사용자와 시스템이 여러 데이터 원본에 대해 쿼리를 실행할 수 있도록 하는 기능 컬렉션을 설명합니다.
Azure Databricks는 Unity 카탈로그를 사용하여 쿼리 페더레이션을 관리합니다. pro SQL Warehouse, 서버리스 SQL 웨어하우스 및 Databricks 런타임 클러스터에 포함된 드라이버를 사용하여 인기 있는 데이터베이스 솔루션에 대한 읽기 전용 연결을 구성합니다. Unity 카탈로그의 데이터 거버넌스 및 데이터 계보 도구는 Azure Databricks 작업 영역의 사용자가 수행한 모든 페더레이션된 쿼리에 대해 데이터 액세스가 관리 및 감사되도록 합니다.
레이크하우스 페더레이션을 사용하는 이유
레이크하우스는 데이터 중복 및 격리를 줄이기 위해 데이터의 중앙 스토리지를 강조합니다. 조직에는 프로덕션 환경에 많은 데이터 시스템이 있을 수 있으며 다음과 같은 여러 가지 이유로 연결된 시스템에서 데이터를 쿼리할 수 있습니다.
- 임시 보고
- 개념 증명 작업.
- 새 ETL 파이프라인 또는 보고서의 예비 단계입니다.
- 증분 마이그레이션 중에 워크로드 지원
이러한 각 시나리오에서 쿼리 페더레이션은 데이터를 현재 위치에서 쿼리하고 복잡하고 시간이 많이 걸리는 ETL 처리를 방지할 수 있으므로 인사이트를 더 빠르게 얻을 수 있습니다.
레이크하우스 페더레이션은 다음과 같은 경우 사용 사례를 위한 것입니다.
- Azure Databricks에 데이터를 수집하지 않으려는 경우
- 쿼리가 외부 데이터베이스 시스템의 컴퓨팅을 활용하려고 합니다.
- 세분화된 액세스 제어, 데이터 계보 및 검색을 포함하여 Unity 카탈로그 인터페이스 및 데이터 거버넌스의 이점을 원합니다.
Lakehouse 페더레이션 설정 개요
Lakehouse Federation을 사용하여 읽기 전용 쿼리에 데이터 세트를 사용할 수 있도록 하려면 다음을 만듭니다.
- 외부 데이터베이스 시스템에 액세스하기 위한 경로 및 자격 증명을 지정하는 Unity 카탈로그의 보안 개체인 연결입니다.
- 외부 데이터 시스템의 데이터베이스를 미러링하는 Unity 카탈로그의 보안 개체인 외세 카탈로그를 사용하면 Azure Databricks 작업 영역에서 해당 데이터 시스템에 대한 읽기 전용 쿼리를 수행하고 Unity 카탈로그를 사용하여 액세스를 관리할 수 있습니다.
지원되는 데이터 원본
Lakehouse Federation은 다음 데이터베이스 유형에 대한 연결을 지원합니다.
- MySQL
- PostgreSQL
- Oracle
- Amazon Redshift
- Salesforce Data Cloud
- Snowflake
- Microsoft SQL Server
- Azure Synapse(SQL Data Warehouse)
- Google BigQuery
- Databricks
- Hive 메타스토어 페더레이션
연결 요구 사항
작업 영역 요구 사항
- Unity 카탈로그에 사용하도록 설정된 작업 영역.
컴퓨팅 요구 사항:
- 컴퓨팅 리소스에서 대상 데이터베이스 시스템으로의 네트워크 연결 Lakehouse Federation에 대한 네트워킹 권장 사항을 참조하세요.
- Azure Databricks 컴퓨팅은 Databricks Runtime 13.3 LTS 이상을 사용해야 하며 공유 모드나 단일 사용자 액세스 모드를 사용해야 합니다.
- SQL 웨어하우스는 프로 또는 서버리스여야 하며 2023.40 이상을 사용해야 합니다.
권한 필요:
- 연결을 생성하려면 메타스토어 관리자 또는 작업 영역에 연결된 Unity 카탈로그 메타스토어에 대한
CREATE CONNECTION
권한이 있는 사용자여야 합니다. - 외래 카탈로그를 만들려면 메타스토어에 대한
CREATE CATALOG
권한이 있고 연결의 소유자이거나 연결에 대한CREATE FOREIGN CATALOG
권한이 있어야 합니다.
추가 권한 요구 사항은 다음 각 태스크 기반 섹션에 지정됩니다.
연결 만들기
연결은 외부 데이터베이스 시스템에 액세스하기 위한 경로와 자격 증명을 지정합니다. 연결을 만들기 위해 Azure Databricks Notebook 또는 Databricks SQL 쿼리 편집기에서 카탈로그 탐색기 또는 CREATE CONNECTION
SQL 명령을 사용할 수 있습니다.
참고 항목
Databricks REST API 또는 Databricks CLI를 사용하여 연결을 만들 수도 있습니다. POST /api/2.1/unity-catalog/connections 및 Unity 카탈로그 명령을 참조하세요.
필요한 권한: 메타스토어 관리자 또는 CREATE CONNECTION
권한이 있는 사용자.
카탈로그 탐색기
Azure Databricks 작업 영역에서 카탈로그를 클릭합니다.
카탈로그 창 위쪽에서 추가 아이콘을 클릭하고 메뉴에서 연결 추가를 선택합니다.
또는 빠른 액세스 페이지에서 외부 데이터 > 단추를 클릭하고 연결 탭으로 이동한 다음, 연결 만들기를 클릭합니다.
사용자에게 친숙한 연결 이름을 입력합니다.
연결 유형(MySQL 또는 PostgreSQL과 같은 데이터베이스 공급자)을 선택합니다.
연결 속성(예: 호스트 정보, 경로 및 액세스 자격 증명)을 입력합니다.
각 연결 유형에는 서로 다른 연결 정보가 필요합니다. 왼쪽 목차에 나열된 연결 유형에 대한 문서를 참조하세요.
(선택 사항) 연결 테스트를 클릭하여 작동하는지 확인합니다.
(선택 사항) 주석을 입력합니다.
만들기를 클릭합니다.
SQL
Notebook 또는 SQL 쿼리 편집기에서 다음 명령을 실행합니다. 이 예제는 PostgreSQL 데이터베이스에 연결하기 위한 것입니다. 옵션은 연결 유형에 따라 다릅니다. 왼쪽 목차에 나열된 연결 유형에 대한 문서를 참조하세요.
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
자격 증명과 같은 중요한 값에 일반 텍스트 문자열 대신 Azure Databricks 비밀을 사용하는 것이 좋습니다. 예시:
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
비밀 설정에 대한 자세한 내용은 비밀 관리를 참조하세요.
기존 연결을 관리하는 방법에 대한 자세한 내용은 Lakehouse 페더레이션에 대한 연결 관리를 참조 하세요.
외국 카탈로그 만들기
외부 카탈로그는 외부 데이터 시스템의 데이터베이스를 미러링하므로 Azure Databricks 및 Unity 카탈로그를 사용하여 해당 데이터베이스의 데이터에 대한 액세스를 쿼리하고 관리할 수 있습니다. 외부 카탈로그를 만들려면 이미 정의된 데이터 원본에 대한 연결을 사용합니다.
외국 카탈로그를 만들려면 Azure Databricks Notebook 또는 SQL 쿼리 편집기에서 카탈로그 탐색기 또는 CREATE FOREIGN CATALOG
SQL 명령을 사용할 수 있습니다.
외세의 카탈로그 메타데이터는 카탈로그와의 상호 작용마다 Unity 카탈로그로 동기화됩니다. Unity 카탈로그와 데이터 원본 간의 데이터 형식 매핑은 각 데이터 원본 설명서의 데이터 형식 매핑 섹션을 확인합니다.
필요한 권한: 메타스토어에 대한 CREATE CATALOG
권한과 연결에 대한 소유권 또는 연결에 대한 CREATE FOREIGN CATALOG
권한이 필요합니다.
카탈로그 탐색기
Azure Databricks 작업 영역에서 카탈로그를 클릭하여 카탈로그 탐색기를 엽니다.
카탈로그 창 위쪽에서 추가 아이콘을 클릭하고 메뉴에서 카탈로그 추가를 선택합니다.
또는 빠른 액세스 페이지에서 카탈로그 단추를 클릭한 다음, 카탈로그 만들기 단추를 클릭합니다.
카탈로그 만들기에서 외래 카탈로그를 만들기 위한 지침을 따릅니다.
SQL
Notebook 또는 SQL 쿼리 편집기에서 다음 SQL 명령을 실행합니다. 괄호 안의 항목은 선택 사항입니다. 자리 표시자 값을 바꿉니다.
-
<catalog-name>
: Azure Databricks의 카탈로그 이름입니다. -
<connection-name>
: 데이터 원본, 경로 및 액세스 자격 증명을 지정하는 연결 개체입니다. -
<database-name>
: Azure Databricks에서 카탈로그로 미러링하려는 데이터베이스의 이름입니다. 2층 네임스페이스를 사용하는 MySQL에는 필요하지 않습니다. -
<external-catalog-name>
: Databricks-Databricks에만 해당 : 미러링 중인 외부 Databricks 작업 영역의 카탈로그 이름입니다. 외국 카탈로그 만들기를 참조하세요.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
외국 카탈로그를 관리하고 사용하는 방법에 대한 자세한 내용은 외국 카탈로그 관리 및 작업을 참조 하세요.
레이크하우스 페더레이션 및 구체화된 뷰
Databricks는 구체화된 뷰를 만들 때 Lakehouse Federation을 사용하여 외부 데이터를 로드하는 것이 좋습니다. Databricks SQL에서 구체화된 뷰 사용을 참조하세요.
Lakehouse 페더레이션을 사용하는 경우 사용자는 다음과 같이 페더레이션된 데이터를 참조할 수 있습니다.
CREATE MATERIALIZED VIEW xyz AS SELECT * FROM federated_catalog.federated_schema.federated_table;
시스템 생성 페더레이션 쿼리 보기
Lakehouse Federation은 Databricks SQL 문을 페더레이션된 데이터 원본으로 푸시다운할 수 있는 문으로 변환합니다. 생성된 SQL 문을 보려면 쿼리 프로필의 그래프 보기에서 외세 데이터 원본 검사 노드를 클릭하거나 EXPLAIN FORMATTED SQL 문을 실행합니다. 적용 범위는 각 데이터 원본 설명서의 지원되는 푸시다운 섹션을 참조하세요.
제한 사항
- 쿼리는 읽기 전용입니다.
- 연결 제한은 Databricks SQL 동시 쿼리 제한을 사용하여 결정됩니다. 연결당 웨어하우스에는 제한이 없습니다. pro 및 클래식 SQL Warehouse에 대한 큐 및 자동 크기 조정을 참조하세요.
- Unity 카탈로그에서 유효하지 않은 이름의 테이블 및 스키마는 지원되지 않으며 외국 카탈로그를 만들 때 Unity 카탈로그에서 무시됩니다. 제한 사항의 명명 규칙 및 제한 사항 목록을 참조하세요.
- 테이블 이름 및 스키마 이름은 Unity 카탈로그에서 소문자로 변환됩니다. 조회는 소문자 이름도 사용해야 합니다. 소문자 이름이 중복된 테이블 또는 스키마가 있는 경우 테이블 또는 스키마 중 하나만 외래 카탈로그로 가져옵니다.
- 참조되는 각 외딴 테이블에 대해 Azure Databricks는 원격 시스템의 하위 쿼리를 예약하여 해당 테이블의 데이터 하위 집합을 반환한 다음, 단일 스트림을 통해 하나의 Azure Databricks 실행기 작업에 결과를 반환합니다. 결과 집합이 너무 크면 실행기가 메모리가 부족할 수 있습니다.
- 단일 사용자 액세스 모드는 연결을 소유한 사용자만 사용할 수 있습니다.
- Lakehouse 페더레이션은 Azure Synapse 연결 또는 Redshift 연결에 대/소문자를 구분하는 식별자를 사용하여 외산 테이블을 페더레이션할 수 없습니다.
리소스 할당량
Azure Databricks는 모든 Unity 카탈로그 보안 개체에 리소스 할당량을 적용합니다. 이러한 할당량은 리소스 제한에 나열됩니다. 외국 카탈로그 및 포함된 모든 개체는 총 할당량 사용량에 포함됩니다.
이러한 리소스 제한을 초과할 것으로 예상되는 경우, Azure Databricks 계정 팀에게 문의하세요.
Unity 카탈로그 리소스 할당량 API를 사용하여 할당량 사용량을 모니터링할 수 있습니다. Unity 카탈로그 리소스 할당량 사용량 모니터링을 참조 하세요.