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

lakeFS로 데이터 가져오기

원문 보기 위키 갱신

lakeFS로 데이터 가져오기 (Importing data)

이 섹션은 데이터를 복사하지 않고 lakeFS 저장소로 가져오는(import) 방법을 설명해요. 데이터를 lakeFS로 복사하는 데 관심이 있다면 Copying data to/from lakeFS 문서를 보세요.

출처: 문서

본문

사전 준비물

  • lakeFS Community에서는 가져오기가 전체 권한을 가진 관리자 사용자에 의해 수행돼요. lakeFS Enterprise에서는 SuperUsers 그룹의 사용자에게 허용돼요. lakeFS Enterprise 사용자가 가져오기 권한을 세밀하게 조정하는 방법은 아래 Fine-grained permissions를 참고하세요.

  • lakeFS 서버가 소스 버킷의 객체를 나열할 권한이 있어야 해요.

  • 소스 버킷은 저장소와 같은 클라우드 제공자, 같은 리전에 있어야 해요.

lakeFS UI 사용하기

  • 저장소 메인 페이지에서 Import 버튼을 눌러 import 대화상자를 열어요.

  • Import from 아래에 가져올 오브젝트 스토어 위치를 입력해요.

  • lakeFS에서의 가져오기 목적지를 입력해요. 현재 브랜치 아래의 경로여야 해요.

  • 커밋 메시지를 추가하고, 선택적으로 커밋 메타데이터도 넣어요.

  • Import를 눌러요.

가져오기가 끝나면 목적지 브랜치에 가져온 객체를 담은 새 커밋이 만들어져요.

CLI 사용: lakectl import

lakectl import 명령은 UI import 마법사와 같은 동작을 해요. 선택한 브랜치에 변경을 커밋하죠.

AWS S3 또는 S3 API 호환 스토리지

lakectl import \
--from s3://bucket/optional/prefix/ \
--to lakefs://my-repo/my-branch/optional/path/

Azure Blob

lakectl import \
--from https://storageAccountName.blob.core.windows.net/container/optional/prefix/ \
--to lakefs://my-repo/my-branch/optional/path/

Google Cloud Storage

lakectl import \
--from gs://bucket/optional/prefix/ \
--to lakefs://my-repo/my-branch/optional/path/

참고

  • 목적지 접두사 아래에 이미 있던 객체는 모두 삭제돼요.

  • 가져오기 소요 시간은 가져오는 객체 수에 따라 달라지지만, 대략 초당 수천 개 객체 수준이에요.

  • 보안상 이유로 로컬 디스크 위에서 lakeFS를 사용하는 경우(blockstore.type=local)에는 import 기능을 명시적으로 활성화해야 해요. blockstore.local.import_enabled를 true로 설정하고 blockstore.local.allowed_external_prefixes에 허용된 가져오기 경로를 지정하세요(설정 레퍼런스 참고). lakectl이나 lakeFS UI를 쓸 때는 현재 로컬 디렉터리만 가져올 수 있어요. 단일 파일을 가져와야 한다면 HTTP API나 API 클라이언트를 사용하고, 요청 본문에 type=object와 destination=<full-path-to-file>을 넣으세요.

  • 원본 버킷의 데이터를 바꿔도 lakeFS에는 반영되지 않고, 불일치가 생길 수 있어요.

예시

lakeFS로 데이터를 가져오는 실전 예시와 실제 사용 사례는 저희 블로그 포스트를 확인해 보세요.

세분화된 권한 (Fine-grained permissions)

lakeFS Enterprise에서 사용할 수 있어요. 무료 평가판 시작.

RBAC 지원과 함께, import 명령을 실행하는 lakeFS 사용자는 다음 권한이 필요해요: fs:WriteObject, fs:CreateCommit, fs:ImportFromStorage, fs:ImportCancel.

위에서 말했듯이 이 권한들은 lakeFS Enterprise의 SuperUsers 그룹에 기본으로 있고, lakeFS Community의 관리자 사용자는 전체 권한을 갖고 있어요.

제공자별 권한

추가로 다음 제공자별 권한이 필요할 수 있어요:

AWS S3 또는 S3 API 호환 스토리지

lakeFS는 가져올 파일을 먼저 나열하고, 이후 사용자 요청 시 파일을 읽기 위해 가져오는 위치에 접근할 수 있어야 해요.

lakeFS가 실행 중인 계정이 소유하지 않은 대상에서 가져오고 싶은 사용 사례도 있어요. 예컨대 lakeFS와 Spark를 실험해 보려고 공개 데이터셋을 가져오는 경우죠.

공개 버킷에서 읽으려면 lakeFS에 추가 권한이 필요해요. 예를 들어 S3 공개 버킷의 경우, 다음 정책을 lakeFS S3 서비스 계정에 붙이면 공개 버킷에는 접근하되 자체 소유 버킷에는 접근하지 못하게 돼요:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PubliclyAccessibleBuckets",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketVersioning",
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:ListBucketMultipartUploads",
                "s3:ListBucketVersions",
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:AbortMultipartUpload",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": ["*"],
            "Condition": {
                "StringNotEquals": {
                    "s3:ResourceAccount": "<YourAccountID>"
                }
            }
        }
    ]
}

참고

ADLS Gen2 스토리지 계정에서 adls 힌트를 쓰는 방법은 폐기(deprecated)됐어요. 가져올 때 원본 소스 URL을 사용하세요.

계정 자격 증명 사용 시의 제한은 Azure deployment 문서를 참고하세요.

Google Cloud Storage

특별한 사전 준비는 없어요.

더 알아보기 (Learn more)

공식 문서: lakeFS Import 가이드