서비스로 메타데이터 가져오기

가져오기를 수행하면 일부 관계형 데이터베이스에서 지원되는 외부 Hive Metastore에 저장된 메타데이터가 Dataproc Metastore로 마이그레이션됩니다. 지원되는 가져오기 소스에는 Avro 및 MySQL 덤프 파일이 포함됩니다.

이 페이지에서는 로컬 브라우저로 연 Google Cloud Console, Cloud SDK gcloud 명령줄 도구, Dataproc Metastore API 메서드 services.metadataImports.create를 사용하여 기존 Dataproc Metastore 서비스로 메타데이터를 가져오는 방법을 설명합니다.

아래 설명에 따라 먼저 Cloud Storage 버킷에 데이터를 두어야 합니다.

시작하기 전에

  • 대부분 gcloud metastore 명령어에는 위치가 필요합니다. 위치를 지정하려면 --location 플래그를 사용하거나 기본 위치를 설정하면 됩니다.

최상의 결과를 얻으려면 Dataproc Metastore 서비스와 동일한 리전에 있는 Cloud Storage 버킷을 사용합니다. Dataproc Metastore에 리전 제한이 적용되진 않아도 공동 배치되는 리소스 및 전역 리소스의 성능이 더 뛰어납니다. 예를 들어 전역 버킷은 모든 서비스 리전에 문제가 없지만 EU 멀티 리전 버킷은 us-central1 서비스에 잘 작동하지 않습니다. 리전 간 액세스로 인해 지연 시간이 높고, 리전별 장애 격리가 어렵고, 리전 간 네트워크 대역폭에 비용이 부과됩니다.

액세스 제어

  • 메타데이터를 가져오려면 metastore.imports.create IAM 권한이 포함된 IAM 역할을 부여 받아야 합니다. Dataproc Metastore 특정 역할인 roles/metastore.adminroles/metastore.editor를 사용하여 가져오기 권한을 부여할 수 있습니다.

  • 또한 roles/ownerroles/editor 레거시 역할을 사용하여 사용자 또는 그룹에 가져오기 권한을 부여할 수 있습니다.

  • Dataproc Metastore 서비스 에이전트(service-CUSTOMER_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com)와 메타데이터를 가져오는 사용자는 가져오기에 사용된 Cloud Storage 버킷에 대한 다음 읽기 권한이 있어야 합니다.

    • MySQL의 경우 가져오기에 사용된 Cloud Storage 객체(SQL 덤프 파일)에 대한 storage.objects.get 권한이 있어야 합니다.

    • Avro의 경우 가져오기에 사용된 Cloud Storage 버킷에 대한 storage.objects.get 권한이 있어야 합니다.

  • VPC 서비스 제어를 사용하는 경우 Dataproc Metastore 서비스와 동일한 서비스 경계에 있는 Cloud Storage 버킷에서만 데이터를 가져올 수 있습니다.

자세한 내용은 Dataproc Metastore IAM 및 액세스 제어를 참조하세요.

서비스로 메타데이터 가져오기

로컬 브라우저로 연 서비스 세부정보 페이지에 가져오기 매개변수를 입력하거나, gcloud 도구를 사용하거나, Dataproc Metastore API 메서드 services.metadataImports.create를 실행하여 서비스로 메타데이터를 가져올 수 있습니다.

가져오기가 대기 중이면 서비스를 업데이트할 수 없습니다. 가져오기 중에도 서비스 사용은 가능합니다.

가져오기 준비

외부 Hive Metastore 데이터베이스에 저장된 메타데이터를 Dataproc Metastore로 가져오려면 먼저 가져오기를 준비해야 합니다.

  1. 외부 데이터베이스의 Avro 파일 또는 MySQL 덤프 파일 형식으로 데이터베이스 덤프를 만듭니다.

  2. 파일을 Cloud Storage로 이동합니다. Cloud Storage 경로를 확인합니다. 가져오기를 수행할 때 필요합니다.

    • Avro의 경우 파일을 Cloud Storage 폴더로 이동합니다. 테이블이 비어 있더라도 각 Hive 테이블에 대한 파일이 있어야 합니다. 파일 이름은 <table-name>.avro 형식을 따라야 하며 <table-name>은 모두 대문자여야 합니다. SQL 덤프 파일에서 <table-name>을 찾을 수 있습니다. 다음은 파일 이름 예시입니다. AUX_TABLE.avro

    • MySQL의 경우 Cloud Storage 버킷으로 파일을 이동합니다.

이제 파일을 준비했으므로 Google Cloud Console, gcloud 도구 또는 Dataproc Metastore API를 사용하여 Dataproc Metastore 서비스로 파일을 가져올 수 있습니다.

Console

  1. Cloud Console에서 Dataproc Metastore 페이지를 엽니다.

    Cloud Console에서 Dataproc Metastore 열기

  2. Dataproc Metastore 페이지에서 메타데이터를 가져오려는 서비스 이름을 클릭합니다. 서비스 세부정보 페이지가 열립니다.

    서비스 세부정보 페이지
  3. 페이지 상단에서 가져오기 버튼을 클릭합니다. 가져오기 대화상자가 열립니다.

  4. 가져오기 이름을 입력합니다.

  5. 소스를 선택합니다.

  6. Cloud Storage URI를 찾아서 선택합니다. 이 URI는 가져오기 데이터 버킷에 대한 Cloud Storage 경로입니다.

  7. 선택사항: 가져오기에 대한 설명을 입력합니다. 이 항목은 나중에 서비스 세부정보 페이지에서 수정할 수 있습니다.

  8. 가져오기 버튼을 클릭하여 서비스를 업데이트합니다.

  9. 서비스 세부정보 페이지로 돌아와서 가져오기/내보내기 탭의 가져오기 기록에 가져오기가 표시되는지 확인합니다.

gcloud

  1. 다음 gcloud metastore services import gcs 명령어를 사용하여 서비스를 업데이트합니다.

    gcloud metastore services import gcs SERVICE \
        --import-id=IMPORT_ID \
        --location=LOCATION \
        --description=DESCRIPTION \
        --dump-type=DUMP_TYPE \
        --database-dump=DATABASE_DUMP
    

    다음을 바꿉니다.

    • SERVICE: 서비스의 이름입니다.
    • IMPORT_ID: 이 메타데이터 가져오기의 ID입니다.
    • LOCATION: Google Cloud 리전입니다.
    • DESCRIPTION: 선택사항: 가져오기 설명입니다. 이 항목은 나중에 gcloud metastore services imports update IMPORT를 사용하여 수정할 수 있습니다.
    • DUMP_TYPE: 외부 데이터베이스의 유형입니다. 기본값은 mysql입니다.
    • DATABASE_DUMP: 데이터베이스 파일이 포함된 Cloud Storage 버킷 경로입니다. gs://로 시작해야 합니다.
  2. 가져오기가 성공했는지 확인합니다.

REST

API 안내에 따라 API 탐색기를 사용하여 서비스로 메타데이터 가져오기를 수행합니다.

가져오기가 성공하면 서비스가 자동으로 활성 상태로 전환됩니다. 실패하면 서비스가 이전의 정상 상태로 롤백됩니다.

서비스의 가져오기 기록을 보려면 Cloud Console의 서비스 세부정보 페이지에 있는 가져오기/내보내기 탭을 참조하세요.

가져오기 주의사항

  • 가져오기를 수행하면 전체 서비스의 메타데이터가 업데이트됩니다. 기존 메타데이터를 덮어쓰게 됩니다.

  • 데이터베이스 파일은 Avro 또는 MySQL 덤프 파일이어야 합니다. PostgreSQL과 같은 다른 방법을 사용하는 경우 덤프를 Avro 또는 MySQL 덤프 파일로 변환해야 합니다. 가져오기는 네이티브 SQL을 사용하여 Dataproc 클러스터에서 얻은 MySQL 덤프를 지원합니다.

  • Dataproc Metastore는 가져오기 중 데이터베이스 콘텐츠를 변환하지 않으며, 이후에 파일 마이그레이션을 처리하지 않습니다. 따라서 데이터를 다른 위치로 이동할 경우 Dataproc Metastore에서 테이블 데이터 위치 및 스키마를 수동으로 업데이트해야 합니다.

  • API를 사용하면 가져오기를 만들고, 나열하고, 설명하고, 업데이트할 수 있지만 이를 삭제할 수 없습니다. 하지만 서비스 자체를 삭제하면 해당 서비스 아래에 중첩된 모든 가져오기가 삭제됩니다.

일반적인 오류

  • 메타데이터를 가져오면 Hive Metastore와 Dataproc Metastore 버전이 호환되지 않습니다. 두 항목이 일치하지 않으면 가져오기가 실패합니다. 자세한 내용은 버전 정책을 참조하세요.

  • Avro에 대한 가져오기를 준비할 때 누락된 Hive 테이블 파일이 있습니다. 테이블이 비어 있더라도 각 Hive 테이블에 파일이 있어야 하며, 그렇지 않으면 가져오기가 실패합니다.

  • Dataproc Metastore 서비스 에이전트(service-CUSTOMER_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com)와 메타데이터를 가져오는 사용자에게 다음 읽기 권한이 없습니다.

    • MySQL의 경우 가져오기에 사용된 Cloud Storage 객체(SQL 덤프 파일)에 대한 storage.objects.get 권한이 없습니다.

    • Avro의 경우 가져오기에 사용된 Cloud Storage 버킷에 대한 storage.objects.get 권한이 없습니다.

  • 데이터베이스 파일이 너무 커서 가져오기 프로세스를 완료하는 데 1시간 넘게 걸립니다.

다음 단계