Azure Storage 파일시스템 지원

Azure Storage 파일시스템 지원 (Azure Storage file system support)

Trino는 Delta Lake, Hive, Hudi, Iceberg 커넥터를 사용하는 카탈로그로 Azure Data Lake Storage Gen2에 접근하는 네이티브 구현을 포함해요.

출처: 문서

본문

Trino는 Delta Lake, Hive, Hudi, Iceberg 커넥터를 사용하는 카탈로그로 Azure Data Lake Storage Gen2에 접근하는 네이티브 구현을 포함해요.

카탈로그 프로퍼티 파일에서 fs.azure.enabled=true로 네이티브 구현을 활성화해요. 또한 Azure 스토리지 계정에는 계층적 네임스페이스(hierarchical namespace)가 활성화되어 있어야 해요.

일반 구성 (General configuration)

Azure Storage 파일시스템 지원의 일반적인 측면을 구성하려면 다음 프로퍼티를 사용해요.

프로퍼티 설명
fs.azure.enabled Azure Storage 지원의 네이티브 구현을 활성화해요. 기본값은 false. true로 설정하면 Azure Storage를 사용하고 다른 모든 프로퍼티를 활성화해요.
azure.auth-type Azure Storage 접근에 사용할 인증 타입. 기본값은 DEFAULT로, 환경 변수에서 로드하거나(구성된 경우) User-assigned managed identity 인증을 사용해요. Access key 인증에는 ACCESS_KEY, OAuth 2.0 인증에는 OAUTH를 사용해요.
azure.endpoint Azure 스토리지 엔드포인트의 호스트명 접미사. 글로벌 Azure 클라우드의 기본값은 core.windows.net. Azure US Government 클라우드는 core.usgovcloudapi.net, Azure Germany 클라우드는 core.cloudapi.de, Azure China 클라우드는 core.chinacloudapi.cn을 사용해요.
azure.read-block-size 읽기 동작 중 블록의 데이터 크기. 기본값은 4MB.
azure.write-block-size 쓰기 동작 중 블록의 데이터 크기. 기본값은 4MB.
azure.max-write-concurrency 동시 쓰기 동작의 최대 개수. 기본값은 8.
azure.max-single-upload-size 데이터 크기. 기본값은 4MB.
azure.max-http-requests 각 노드에서 Azure로 보내는 동시 HTTP 요청의 최대 정수. 기본값은 노드의 프로세서 수의 두 배. 최소 1. 요청 제한(rate limiting) 문제가 생기면 이 프로퍼티로 요청 수를 줄여요.
azure.connection-pool-max-idle-time 닫히기 전에 연결 풀에서 유휴 상태로 남을 수 있는 연결의 시간. 기본값은 5m.
azure.http-request-timeout HTTP 요청 타임아웃 시간. Azure SDK가 요청을 재시도하는 데 걸리는 시간 포함. 기본값은 10m.
azure.application-id Azure Storage로 보내는 모든 요청의 User-Agent 헤더에 추가되는 애플리케이션 식별자를 지정해요. 기본값은 Trino.
azure.multipart-write-enabled 큰 파일에 대한 멀티파트 쓰기를 활성화해요. 기본값은 false.

User-assigned managed identity 인증 (User-assigned managed identity authentication)

Azure Storage에 대한 User-assigned managed identity 인증을 구성하려면 다음 프로퍼티를 사용해요.

프로퍼티 설명
azure.auth-type DEFAULT로 설정해야 해요.
azure.user-assigned-managed-identity.client-id User-assigned managed identity의 클라이언트 ID를 지정해요.
azure.user-assigned-managed-identity.resource-id User-assigned managed identity의 리소스 ID를 지정해요.

azure.user-assigned-managed-identity.client-id 또는 azure.user-assigned-managed-identity.resource-id 중 하나만 지정할 수 있어요.

Access key 인증 (Access key authentication)

Azure Storage에 대한 access key 인증을 구성하려면 다음 프로퍼티를 사용해요.

프로퍼티 설명
azure.auth-type ACCESS_KEY로 설정해야 해요.
azure.access-key Azure Storage 계정의 복호화된 access key. 인증 타입 ACCESS_KEY가 필요해요.

OAuth 2.0 인증 (OAuth 2.0 authentication)

Azure Storage에 대한 OAuth 2.0 인증을 구성하려면 다음 프로퍼티를 사용해요.

프로퍼티 설명
azure.auth-type OAUTH로 설정해야 해요.
azure.oauth.tenant-id Azure 인증의 테넌트 ID.
azure.oauth.endpoint OAuth 2.0 인증의 엔드포인트 URL.
azure.oauth.client-id OAuth 2.0 서비스 주체(service principal)의 클라이언트 또는 애플리케이션 ID.
azure.oauth.secret 서비스 주체의 OAuth 2.0 클라이언트 시크릿.

여러 스토리지 계정 접근 (Access multiple storage accounts)

단일 카탈로그 구성에서 Trino가 여러 Azure 스토리지 계정에 접근하게 하려면 Azure 서비스 주체로 OAuth 2.0 인증을 사용할 수 있어요. 다음 단계는 Azure에서 서비스 주체를 만들고 스토리지 계정에 접근을 부여하는 IAM 역할을 할당하는 방법을 설명해요.

  1. Azure App Registrations를 사용해 Azure Active Directory에 서비스 주체를 만들고 클라이언트 시크릿을 저장해요.
  2. 계정의 Access Control(IAM) 섹션에서 스토리지 계정에 대한 접근을 할당해요. Role Assignments를 추가하고 Storage Blob Data Contributor 같은 적절한 역할을 선택해요.
  3. User, group, or service principal 옵션으로 접근을 할당하고 만든 서비스 주체를 선택해요. 저장해 역할 할당을 마무리해요.

서비스 주체를 만들고 스토리지 계정을 구성한 뒤에는 애플리케이션 등록의 Client ID, Secret, Tenant ID 값을 사용해 OAuth 2.0 인증의 프로퍼티로 카탈로그를 구성해요.

레거시 Azure Storage 파일시스템에서 마이그레이션 (Migration from legacy Azure Storage file system)

이전 Trino 릴리스에는 fs.hadoop.enabledhive.azure.* 프로퍼티로 구성된 카탈로그가 사용하는 레거시 Azure Storage 파일시스템 구현이 포함돼 있었어요. 그 레거시 지원은 제거됐어요. 네이티브 Azure 파일시스템 구현을 사용하세요.

카탈로그가 Azure용 네이티브 파일시스템 구현을 사용하도록 마이그레이션하려면 카탈로그 구성에서 다음 편집을 해요.

  • fs.azure.enabled=true 카탈로그 구성 프로퍼티를 추가해요.
  • 카탈로그가 레거시 Azure Storage 접근에만 fs.hadoop.enabled를 활성화했다면 그 프로퍼티를 제거해요.
  • azure.auth-type 카탈로그 구성 프로퍼티를 구성해요.
  • 다음 표를 참고해 기존 레거시 카탈로그 구성 프로퍼티를 해당 네이티브 구성 프로퍼티로 이름을 바꿔요. 별도 표기 외에는 지원되는 구성 값이 동일해요.
레거시 프로퍼티 네이티브 프로퍼티 비고
hive.azure.abfs-access-key azure.access-key
hive.azure.abfs.oauth.endpoint azure.oauth.endpoint OAuth 2.0 인증의 azure.oauth.tenant-id도 참고하세요.
hive.azure.abfs.oauth.client-id azure.oauth.client-id
hive.azure.abfs.oauth.secret azure.oauth.secret
hive.azure.abfs.oauth2.passthrough azure.use-oauth-passthrough-token
  • 다음 레거시 구성 프로퍼티가 카탈로그 구성에 있다면 제거해요.
    • hive.azure.abfs-storage-account
    • hive.azure.wasb-access-key
    • hive.azure.wasb-storage-account

더 알아보기 (Learn more)

Azure Storage 파일시스템 구성을 배웠어요. 이어서 Google Cloud Storage 파일시스템 지원을 살펴보면 좋아요.