아이스버그 FileIO

아이스버그 FileIO

아이스버그는 데이터 파일과 메타데이터 파일을 읽고 쓰는 일을 유연한 추상화(abstraction)로 처리해요. 이 문서에서는 파일 입출력을 담당하는 FileIO 인터페이스의 역할과 다양한 구현체에 대해 알아볼게요. FileIO가 어떻게 스토리지 계층과 소통하는지 이해하면, 아이스버그가 물리적 파일 배치를 어떻게 추상화하는지도 자연스럽게 알게 돼요.

출처: 문서

본문

개요 (Overview)

아이스버그는 데이터 파일과 메타데이터 파일을 읽고 쓰는 일에 유연한 추상화를 제공해요. FileIO 인터페이스 덕분에 아이스버그 라이브러리가 실제 스토리지 계층과 소통할 수 있어요. FileIO는 작업 계획(planning) 단계와 커밋(commit) 단계에서 모든 메타데이터 연산에 사용돼요.

아이스버그 파일 (Iceberg Files)

아이스버그 테이블의 메타데이터는 데이터 파일의 절대 경로(absolute path)를 추적해요. 그래서 물리적인 레이아웃보다 더 높은 수준에서 추상화할 수 있어요. 또한 테이블 상태를 바꾸는 작업은 새 메타데이터 파일을 쓰는 방식으로 이뤄지고, 절대 파일 이름을 바꾸는(rename) 일은 없어요. 덕분에 파일 연산에 필요한 요구사항이 훨씬 작아졌어요. FileIO 구현에 꼭 필요한 기능은 파일을 읽고, 쓰고, 스트림 안의 어떤 위치로든 이동하는 것(seek)이에요.

처리 엔진에서의 사용 (Usage in Processing Engines)

데이터 파일을 읽고 쓰는 책임은 처리 엔진(processing engine)에 있고, 작업이 실행되는 동안에 이뤄져요. 하지만 데이터 파일이 쓰여진 뒤에는 처리 엔진이 FileIO를 사용해서 테이블의 새 상태를 담은 아이스버그 메타데이터 파일을 새로 써요.

스토리지 종류에 따라 서로 다른 FileIO 구현체를 사용해요. 아이스버그는 주요 스토리지 제공자(provider)를 위한 FileIO 구현체를 기본으로 제공해요.

  • Amazon S3
  • Google Cloud Storage
  • Object Service Storage (https 포함)
  • Dell Enterprise Cloud Storage
  • Hadoop (어떤 Hadoop FileSystem 구현체든 지원해요)

더 알아보기 (Learn more)