본문 바로가기
WIKI 기술 지식 베이스

lakeFS와 Starburst Galaxy 함께 사용하기

원문 보기 위키 갱신

Starburst Galaxy는 Trino 기반의 완전 관리형 클라우드 네이티브 분석 플랫폼이에요. Starburst Galaxy를 lakeFS Iceberg REST Catalog에 직접 연결하면 lakeFS로 버전 관리되는 Iceberg 테이블을 쿼리할 수 있고, 모든 lakeFS 브랜치와 태그가 쿼리 가능한 스키마로 노출돼요.

출처: 문서

본문

lakeFS Team과 lakeFS Enterprise에서 사용할 수 있어요. 무료 체험을 시작하거나 문의하기를 이용하세요.

Starburst Galaxy는 Trino 기반으로 만들어진, 완전 관리형 클라우드 네이티브 분석 플랫폼이에요. Starburst Galaxy를 lakeFS Iceberg REST Catalog에 직접 연결해서 lakeFS가 버전 관리하는 Iceberg 테이블을 쿼리할 수 있고, 모든 lakeFS 브랜치와 태그가 쿼리 가능한 스키마로 드러나요.

Iceberg REST Catalog

Starburst Galaxy는 lakeFS Iceberg REST Catalog를 통해 lakeFS에 연결돼요. Apache Polaris 카탈로그 커넥터를 사용하는 거예요. lakeFS는 테이블 메타데이터와 버전 관리를 담당하고, Starburst는 기반 오브젝트 스토어에서 데이터 파일을 직접 읽고 써요 — lakeFS는 데이터 경로 바깥에 남아 있어요.

Info

lakeFS Iceberg REST Catalog는 lakeFS Enterprise 기능이에요. 시작하려면 문의하기를 이용하세요.

카탈로그를 저장소 범위로 한정하기

Starburst Galaxy의 카탈로그 하나는 단일 Iceberg REST 엔드포인트를 가리켜요. 저장소에 범위가 한정된 relative-namespace 엔드포인트를 사용하면, 저장소 안의 모든 브랜치와 태그가 스키마로 노출돼요:

https://lakefs.example.com/iceberg/relative_to/<repository>/api

저장소 범위 엔드포인트에서는 네임스페이스가 <ref>.<namespace> 형태로 돌아와요(예: main.inventory). 그래서 카탈로그 하나로 여러 브랜치와 태그를 나란히 쿼리하고 비교할 수 있어요.

Tip

단일 브랜치(relative_to/<repository>.<branch>)가 아니라 저장소(relative_to/<repository>)에 범위를 두세요. 저장소 범위는 모든 ref를 자체 스키마로 노출하고, 바로 이 덕분에 하나의 카탈로그에서 브랜치-브랜치, 태그-브랜치 비교가 가능해져요.

설정

Starburst Galaxy에서 Catalogs → Create catalog → Apache Polaris로 이동해 다음을 설정하세요:

필드 값 비고
Catalog name 예: lakefs SQL에서 사용하는 이름(..)이에요.
Authentication to S3 AWS access key 또는 Cross-account IAM role Galaxy가 데이터 버킷에 직접 읽기/쓰기 접근하도록 권한을 줘요(아래 참고).
Polaris server endpoint https://lakefs.example.com/iceberg/relative_to//api 위에서 설명한 저장소 범위 REST 엔드포인트예요.
Polaris catalog 아무 값(예: lakefs) 폼에서 요구하지만 lakeFS는 무시해요 — 저장소는 엔드포인트에서 나와요.
Client Id <lakefs_access_key_id> 여러분의 lakeFS 액세스 키예요.
Client secret <lakefs_secret_access_key> 여러분의 lakeFS 시크릿 키예요.

Test connection을 클릭하고, 카탈로그를 저장한 뒤 데이터 버킷과 같은 리전의 클러스터에 추가하세요.

데이터 버킷 권한

lakeFS Iceberg REST Catalog는 테이블 메타데이터를 관리하고, Starburst Galaxy는 기반 스토리지(예: Amazon S3)에서 데이터 파일을 직접 읽고 써요. Galaxy가 사용하는 IAM 역할이나 액세스 키에 데이터 버킷에 대한 읽기/쓰기 권한이 있는지 반드시 확인하세요. 다음 AWS IAM 정책이 필요한 권한을 제공해요:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "StarburstGalaxyIcebergAccess",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::<lakefs_repo_storage_namespace>/_managed/",
                "arn:aws:s3:::<lakefs_repo_storage_namespace>/_managed/*"
            ]
        },
        {
            "Sid": "BucketLevelRequiredForStarburst",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::<lakefs_repo_storage_namespace_bucket_name>"
        }
    ]
}

쿼리하기

각 lakeFS ref는 <ref>.<namespace>라는 이름의 스키마로 노출돼요. 이 스키마 이름에는 점이 들어 있으니, 하나의 식별자로 따옴표로 묶으세요:

-- approved data on the main branch
SELECT count(*) FROM "lakefs"."main.inventory"."books";

-- compare a candidate branch and a tag against main, all from the same catalog
SELECT count(*) FROM "lakefs"."staging.inventory"."books";
SELECT count(*) FROM "lakefs"."v1.inventory"."books";

Tip

Iceberg REST Catalog와 상대 네임스페이스에 대해 더 알고 싶다면 Iceberg REST Catalog 문서를 참고하세요.

더 알아보기 (Learn more)

공식 문서의 자세한 내용은 https://docs.lakefs.io/integrations/starburst_galaxy/에서 확인하실 수 있어요.