Hive 메타스토어

Dataproc Metastore는 Google Cloud에서 실행되는 완전 관리형 고가용성 자동 복구 서버리스 Apache Hive 메타스토어(HMS)입니다.

메타데이터를 완전히 관리하기 위해 Dataproc Metastore는 데이터를 Apache Hive 테이블에 매핑합니다.

지원되는 Apache Hive 버전

Dataproc Metastore는 특정 버전의 Apache Hive만 지원합니다. 자세한 내용은 Hive 버전 정책을 참조하세요.

Hive에서 메타데이터를 처리하는 방법

Dataproc Metastore는 Hive metastore이므로 메타데이터 관리 방법을 이해하는 것이 중요합니다.

기본적으로 모든 Hive 애플리케이션에는 관리형 내부 테이블 또는 비관리형 외부 테이블이 있게 됩니다. 즉, Dataproc Metastore 서비스에 저장하는 메타데이터는 내부 테이블과 외부 테이블 모두에 존재할 수 있습니다.

데이터를 수정할 때 Dataproc Metastore 서비스(Hive)는 내부 테이블과 외부 테이블을 다르게 취급합니다.

  • 내부 테이블. 메타데이터 및 테이블 데이터를 모두 관리합니다.
  • 외부 테이블. 메타데이터만 관리합니다.

예를 들어 DROP TABLE Hive SQL 문을 사용하여 테이블 정의를 삭제하면 다음이 수행됩니다.

drop table foo
  • 내부 테이블. Dataproc Metastore가 모든 메타데이터를 삭제합니다. 테이블과 연결된 파일도 삭제합니다.

  • 외부 테이블. Dataproc Metastore가 메타데이터만 삭제합니다. 테이블과 연결된 데이터는 보관합니다.

Hive 웨어하우스 디렉터리

Dataproc Metastore는 Hive 웨어하우스 디렉터리를 사용하여 내부 테이블을 관리합니다. Hive 웨어하우스 디렉터리가 실제로 데이터가 저장되는 곳입니다.

Dataproc Metastore 서비스를 사용할 때 기본 Hive 웨어하우스 디렉터리는 Cloud Storage 버킷입니다. Dataproc Metastore는 웨어하우스 디렉터리에 대해 Cloud Storage 버킷 사용만 지원합니다. 그에 비해 Hive 웨어하우스 디렉터리는 일반적으로 로컬 디렉터리를 가리킨다는 점에서 온프레미스 HMS와 다릅니다.

이 버킷은 Dataproc Metastore 서비스를 만들 때마다 자동으로 생성됩니다. 이 값은 hive.metastore.warehouse.dir 속성에 Hive Metastore 구성 재정의를 설정하여 변경할 수 있습니다.

아티팩트 Cloud Storage 버킷

아티팩트 버킷은 내보낸 메타데이터 및 관리형 내부 테이블 데이터와 같은 Dataproc Metastore 아티팩트를 저장합니다.

Dataproc Metastore 서비스를 만들면 프로젝트에 Cloud Storage 버킷이 자동으로 생성됩니다. 기본적으로 아티팩트 버킷과 웨어하우스 디렉터리는 모두 동일한 버킷을 가리킵니다. 아티팩트 버킷의 위치는 변경할 수 없지만 Hive 웨어하우스 디렉터리의 위치는 변경할 수 있습니다.

아티팩트 버킷은 다음 위치에 있습니다.

  • gs://your-artifacts-bucket/hive-warehouse
  • 예를 들면 gs://gcs-your-project-name-0825d7b3-0627-4637-8fd0-cc6271d00eb4입니다.

Hive 웨어하우스 디렉터리 액세스

버킷이 자동으로 생성된 후에는 Dataproc 서비스 계정에 Hive 웨어하우스 디렉터리로 액세스할 수 있는 권한이 있는지 확인합니다.

  • 객체 수준(예: gs://mybucket/object)에서 웨어하우스 디렉터리에 액세스하려면 roles/storage.objectAdmin 역할을 사용하여 Dataproc 서비스 계정에 버킷의 스토리지 객체에 대한 읽기 및 쓰기 액세스 권한을 부여합니다. 이 역할은 버킷 이상 수준에서 설정해야 합니다.

  • 최상위 폴더(예: gs://mybucket)를 사용할 때 웨어하우스 디렉터리에 액세스하려면 roles/storage.storageAdmin 역할을 사용하여 Dataproc 서비스 계정에 버킷의 스토리지 객체에 대한 읽기 및 쓰기 액세스 권한을 부여합니다.

Hive 웨어하우스 디렉터리가 Dataproc Metastore와 동일한 프로젝트에 없으면 Dataproc Metastore 서비스 에이전트에 Hive 웨어하우스 디렉터리에 액세스할 수 있는 권한이 있는지 확인합니다. Dataproc Metastore 프로젝트의 서비스 에이전트는 service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com입니다. roles/storage.objectAdmin 역할을 사용하여 서비스 에이전트에 버킷에 대한 읽기 및 쓰기 액세스 권한을 부여합니다.

Hive 웨어하우스 디렉터리 찾기

  1. Dataproc Metastore 페이지를 엽니다.
  2. 서비스의 이름을 클릭합니다.

    서비스 세부정보 페이지가 열립니다.

  3. 구성 테이블에서 Metastore 구성 재정의 > hive.metastore.warehouse.dir을 찾습니다.

  4. gs://로 시작하는 값을 찾습니다.

    이 값은 Hive 웨어하우스 디렉터리의 위치입니다.

    hive.metastore.warehouse.dir 값

Hive 웨어하우스 디렉터리 변경

Dataproc Metastore에 자체 Cloud Storage 버킷을 사용하려면 새 버킷 위치를 가리키도록 Hive Metastore 구성 재정의를 설정합니다.

기본 웨어하우스 디렉터리를 변경하는 경우 다음 권장사항을 따르세요.

  • Cloud Storage 버킷 루트(gs://mybucket)를 사용하여 Hive 테이블을 저장하지 않습니다.

  • Dataproc Metastore VM 서비스 계정에 Hive 웨어하우스 디렉터리 액세스 권한이 있는지 확인합니다.

  • 최상의 결과를 얻으려면 Dataproc Metastore 서비스와 동일한 리전에 있는 Cloud Storage 버킷을 사용합니다. Dataproc Metastore는 리전 간 버킷이 허용되지만 공동 배치된 리소스의 성능이 더 좋습니다. 예를 들어 EU 멀티 리전 버킷은 us-central1 서비스에서 제대로 작동하지 않습니다. 리전 간 액세스로 인해 지연 시간이 높고 리전별 장애 격리가 어려우며 리전 간 네트워크 대역폭에 비용이 청구됩니다.

Hive 웨어하우스 디렉터리를 변경하려면 다음 안내를 따르세요.

  1. Dataproc Metastore 페이지를 엽니다.
  2. 서비스의 이름을 클릭합니다.

    서비스 세부정보 페이지가 열립니다.

  3. 구성 테이블에서 Metastore 구성 재정의 > hive.metastore.warehouse.dir 섹션을 찾습니다.

  4. hive.metastore.warehouse.dir 값을 새 버킷의 위치로 변경합니다. 예를 들면 gs://my-bucket/path/to/location입니다.

버킷 삭제

Dataproc Metastore 서비스를 삭제해도 Cloud Storage 아티팩트 버킷은 자동으로 삭제되지 않습니다. 유용한 사후 서비스 데이터가 포함될 수 있기 때문에 버킷이 자동으로 삭제되지 않습니다. 버킷을 삭제하려면 Cloud Storage 삭제 작업을 실행합니다.

다음 단계