Dataproc에서 Apache Hive 사용

Last reviewed 2023-05-08 UTC

이 참조 아키텍처는 Cloud Storage에 Hive 데이터를 저장하고, Cloud SQLMySQL 데이터베이스에 Hive 메타스토어를 호스팅하여 효율적이고 유연한 방식으로 Dataproc에서 Apache Hive를 사용할 때의 이점을 설명합니다.

이 문서는 Dataproc에 Apache Hive를 배포하고 Cloud SQL에 Hive 메타스토어를 배포하는 데 관심이 있는 클라우드 설계자와 데이터 엔지니어를 대상으로 작성되었습니다.

아키텍처

다음은 Hive 쿼리의 수명 주기를 보여주는 다이어그램입니다.

단일 리전 아키텍처의 다이어그램

다이어그램에서 Hive 쿼리의 수명 주기는 다음과 같은 단계를 따릅니다.

  1. Hive 클라이언트에서 임시 Dataproc 클러스터에서 실행되는 Hive 서버로 쿼리를 제출합니다.
  2. Hive 서버는 쿼리를 처리하고 메타스토어 서비스에 메타데이터를 요청합니다.
  3. 메타스토어 서비스는 Cloud SQL 프록시를 통해 Cloud SQL에서 Hive 메타데이터를 가져옵니다.
  4. Hive 서버는 Cloud Storage의 지역 내 버킷에 위치한 Hive 웨어하우스에서 데이터를 로드합니다.
  5. Hive 서버가 클라이언트로 결과를 반환합니다.

설계 대안

다음 섹션에서는 이 아키텍처에 대해 잠재적인 설계 대안을 설명합니다.

멀티 리전 아키텍처

여러 지리적 리전에서 Hive 서버를 실행해야 하는 경우 멀티 리전 아키텍처를 사용하는 것이 좋습니다. 이 경우 메타스토어 서비스를 전담하여 호스팅하고 Cloud SQL 인스턴스와 동일한 리전에 있는 별도의 Dataproc 클러스터를 만들어야 합니다.

메타스토어 서비스는 때때로 MySQL 데이터베이스에 대용량 요청을 보낼 수 있으므로, 성능 저하를 최소화하기 위해 메타스토어 서비스를 MySQL 데이터베이스에 지리적으로 가까이 두는 것이 중요합니다. 일반적으로 Hive 서버가 메타스토어 서비스로 보내는 요청은 이보다 훨씬 적습니다. 따라서 Hive 서버와 메타스토어 서비스가 서로 다른 리전에 있어도 지연 시간은 증가하지만 크게 문제가 되지 않을 가능성이 높습니다.

메타스토어 서비스는 워커 노드가 아닌 Dataproc 마스터 노드에서만 실행될 수 있습니다. Dataproc은 표준 클러스터 및 고가용성 클러스터에 최소 2개의 워커 노드를 의무적으로 둡니다.

사용하지 않는 작업자 노드로 인한 리소스 낭비를 방지하려면 메타스토어 서비스용으로 단일 노드 클러스터를 만들면 됩니다. 가용성을 높이려는 경우 단일 노드 클러스터를 여러 개 만들 수 있습니다.

메타스토어 서비스 클러스터만 Cloud SQL 인스턴스에 직접 연결하면 되므로 메타스토어 서비스 클러스터에만 Cloud SQL 프록시를 설치하면 됩니다. 그런 다음 Hive 서버가 메타스토어 서비스 클러스터를 가리키도록 hive.metastore.uris 속성을 쉼표로 구분된 URI 목록으로 설정합니다. 예를 들면 다음과 같습니다.

thrift://metastore1:9083,thrift://metastore2:9083

여러 장소에 위치한 Hive 서버에서 Hive 데이터에 액세스해야 하는 경우 이중 리전 또는 멀티 리전 버킷 사용을 고려할 수도 있습니다. 여러 다른 버킷 위치 유형 중에서 선택할 때는 사용 사례를 고려해야 합니다. 지연 시간, 가용성, 비용의 균형점을 찾아야 합니다.

다음은 멀티 리전 아키텍처의 예시를 보여주는 다이어그램입니다.

멀티 리전 Hive 아키텍처의 다이어그램

위에서 볼 수 있듯이 멀티 리전 시나리오는 약간 더 복잡하고 훨씬 강력합니다. 이 참조 아키텍처의 배포 가이드에서는 단일 리전 시나리오를 사용합니다.

멀티 리전 아키텍처의 장점

컴퓨팅 리소스와 스토리지 리소스를 분리하면 다음과 같은 장점이 있습니다.

  • 유연성과 민첩성: 특정 Hive 워크로드에 맞게 클러스터 구성을 맞춤화하고 필요에 따라 각 클러스터를 독립적으로 확장 및 축소할 수 있습니다.
  • 비용 절감: Hive 작업을 실행해야 할 때 임시 클러스터를 가동하고 작업이 완료되면 삭제할 수 있습니다. 작업에 필요한 리소스는 사용 중에만 활성화되므로 사용한 만큼만 지불하면 됩니다. 선점형 VM을 사용하여 중요하지 않은 데이터를 처리하거나 총 비용을 낮추면서 매우 큰 클러스터를 만들 수도 있습니다.
  • 복원력: 단순성을 위해 이 참조 아키텍처에서는 마스터 인스턴스 하나만 사용합니다. 프로덕션 워크로드에서는 장애 복구성을 높이기 위해 Dataproc의 고가용성 모드를 사용하여 마스터 인스턴스가 3개인 클러스터를 만드는 것이 좋습니다.

비용 최적화

이 참조 아키텍처 및 배포에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

  • Dataproc
  • Cloud Storage
  • Cloud SQL

가격 계산기를 사용하여 예상 사용량을 기준으로 예상 비용을 산출할 수 있습니다.

Google Cloud를 처음 사용하는 사용자는 무료 체험판을 사용할 수 있습니다.

배포

이 아키텍처를 배포하려면 Dataproc에 Apache Hive 배포를 참조하세요.

다음 단계

  • 확장성과 경제성이 뛰어난 Google의 서버리스 엔터프라이즈 데이터 웨어하우스인 BigQuery 사용해 보기
  • Hadoop 워크로드를 Google Cloud로 마이그레이션하는 방법에 대한 이 가이드 참조하기
  • 초기화 작업을 통해 Dataproc에서 Hive HCatalog를 사용하는 자세한 방법 확인하기
  • 고가용성을 위해 Cloud SQL을 구성하여 서비스 안정성을 높이는 방법을 알아봅니다.
  • 그 밖의 참조 아키텍처, 다이어그램, 튜토리얼, 권장사항을 알아보려면 클라우드 아키텍처 센터를 확인하세요.