멀티 리전 Dataproc Metastore 서비스 설정

이 페이지에서는 멀티 리전 Dataproc Metastore 서비스를 설정하는 방법을 보여줍니다. 멀티 리전 Dataproc Metastore 서비스 작동 방식에 대한 자세한 내용은 Dataproc Metastore 리전을 참조하세요.

시작하기 전에

필요한 역할

멀티 리전 Dataproc Metastore 서비스를 만드는 데 필요한 권한을 얻으려면 최소 권한의 원칙에 따라 관리자에게 프로젝트에 대해 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 멀티 리전 Dataproc Metastore 서비스를 만드는 데 필요한 metastore.services.create 권한이 포함되어 있습니다.

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

특정 Dataproc Metastore 역할 및 권한에 대한 상세 설명은 IAM으로 액세스 관리를 참조하세요.

멀티 리전 Dataproc Metastore 서비스 정보

멀티 리전 Dataproc Metastore 서비스는 두 개의 서로 다른 리전에 데이터를 저장하고 두 리전을 사용하여 워크로드를 실행합니다. 예를 들어 멀티 리전 nam7에는 us-central1us-east4 리전이 포함됩니다.

  • 멀티 리전 Dataproc Metastore 서비스는 두 리전 간에 메타데이터를 복제하고 관련 엔드포인트를 노출하여 Hive Metastore에 액세스합니다. gRPC의 경우 리전당 하나의 엔드포인트가 노출됩니다. Thrift의 경우 서브네트워크당 하나의 엔드포인트가 노출됩니다.

  • 멀티 리전 Dataproc Metastore 서비스는 활성-활성 고가용성(HA) 클러스터 구성을 제공합니다. 이 구성에서는 작업 실행 시 워크로드가 두 리전에 액세스할 수 있습니다. 또한 서비스에 대한 장애 조치 메커니즘도 제공합니다. 예를 들어 기본 리전 엔드포인트가 다운되면 워크로드가 자동으로 보조 리전으로 라우팅됩니다. 이렇게 하면 Dataproc 작업의 중단을 방지할 수 있습니다.

고려사항

멀티 리전 Dataproc Metastore 서비스에는 다음 고려사항이 적용됩니다.

  • 멀티 리전 서비스는 Spanner 데이터베이스 유형만 지원합니다. 멀티 리전 서비스를 만들기 전에 지원되는 기능 목록을 확인하세요.

  • 멀티 리전 서비스는 Dataproc Metastore 2 구성만 지원합니다.

  • 멀티 리전 서비스는 Cloud Storage 멀티 리전 위치아티팩트 버킷을 만듭니다. 예를 들어 Nam7 버킷은 US 멀티 리전 위치에서 생성됩니다.

멀티 리전 Dataproc Metastore 서비스 만들기

Dataproc Metastore 서비스 2에서 Thrift 또는 gRPC 엔드포인트 프로토콜을 사용하여 멀티 리전 서비스를 만드는 방법을 알아보려면 다음 탭 중 하나를 선택합니다.

gRPC

gRPC 엔드포인트 프로토콜을 사용하는 멀티 리전 서비스를 만들 때 특정 네트워크 설정을 지정할 필요가 없습니다. gRPC 프로토콜이 네트워크 라우팅을 처리합니다.

Console

  1. Google Cloud 콘솔에서 Dataproc Metastore 페이지로 이동합니다.

    Dataproc Metastore로 이동

  2. 탐색 메뉴에서 +만들기를 클릭합니다.

    Metastore 서비스 만들기 대화상자가 열립니다.

  3. Dataproc Metastore 2를 선택합니다.

  4. 가격 책정 및 용량 섹션에서 Enterprise Plus - 이중 리전을 선택합니다.

  5. 엔드포인트 프로토콜에서 gRPC*를 선택합니다.

  6. 서비스를 만들고 시작하려면 제출을 클릭합니다.

    새 메타스토어 서비스가 Dataproc Metastore 페이지에 나타납니다. 서비스 사용이 준비될 때까지 상태가 생성 중으로 표시됩니다. 준비되면 상태가 활성으로 변경됩니다. 서비스를 프로비저닝하는 데 몇 분 정도 걸릴 수 있습니다.

gcloud CLI

Dataproc Metastore 멀티 리전 서비스를 만들려면 다음 gcloud metastore services create 명령어를 실행합니다. 이 명령어는 Dataproc Metastore 버전 3.1.2를 만듭니다.

gcloud metastore services create SERVICE \
  --location=MULTI_REGION \
{ --instance-size=INSTANCE_SIZE | --scaling-factor=SCALING_FACTOR } \
  --endpoint-protocol=grpc

다음을 바꿉니다.

  • SERVICE: Dataproc Metastore 서비스 이름
  • MULTI_REGION: Dataproc Metastore 서비스를 만들려는 멀티 리전입니다.
  • INSTANCE_SIZE: 멀티 리전 Dataproc Metastore의 인스턴스 크기입니다. 예를 들면 small, medium 또는 large입니다. INSTANCE_SIZE 값을 지정하면 SCALING_FACTOR 값을 지정하지 않습니다.
  • SCALING_FACTOR: Dataproc Metastore 서비스의 확장 인수입니다. 예를 들면 0.1입니다. SCALING_FACTOR 값을 지정하면 INSTANCE_SIZE 값을 지정하지 않습니다.

Thrift

Thrift 엔드포인트 프로토콜을 사용하는 멀티 리전 서비스를 만들 때는 적절한 서브네트워크 설정을 설정해야 합니다. 이 경우 사용 중인 각 VPC 네트워크에 대해 각 리전에 서브네트워크를 하나 이상 제공해야 합니다.

예를 들어 nam7 멀티 리전을 만들려면 us-central1us-east4 리전을 모두 제공해야 합니다.

Console

  1. Google Cloud 콘솔에서 Dataproc Metastore 페이지로 이동합니다.

    Dataproc Metastore로 이동

  2. 탐색 메뉴에서 +만들기를 클릭합니다.

    Metastore 서비스 만들기 대화상자가 열립니다.

  3. Dataproc Metastore 2를 선택합니다.

  4. 가격 책정 및 용량 섹션에서 Enterprise Plus - 이중 리전을 선택합니다.

    자세한 내용은 요금제 및 확장 구성을 참조하세요.

  5. 서비스 이름 필드에 서비스의 고유 이름을 입력합니다.

    이름 지정 규칙에 대한 자세한 내용은 리소스 이름 지정 규칙을 참조하세요.

  6. 엔드포인트 프로토콜에서 Thrift를 선택합니다.

  7. 네트워크 구성에서 선택한 멀티 리전 구성을 형성하는 서브네트워크를 제공합니다.

  8. 남은 서비스 구성 옵션의 경우 제공된 기본값을 사용합니다.

  9. 서비스를 만들고 시작하려면 제출을 클릭합니다.

    새 메타스토어 서비스가 Dataproc Metastore 페이지에 나타납니다. 서비스 사용이 준비될 때까지 상태가 생성 중으로 표시됩니다. 준비되면 상태가 활성으로 변경됩니다. 서비스를 프로비저닝하는 데 몇 분 정도 걸릴 수 있습니다.

gcloud CLI

Dataproc Metastore 멀티 리전 서비스를 만들려면 다음 gcloud metastore services create 명령어를 실행합니다. 이 명령어는 Dataproc Metastore 버전 3.1.2를 만듭니다.

gcloud metastore services create SERVICE \
  --location=MULTI_REGION \
  --consumer-subnetworks="projects/PROJECT_ID/regions/LOCATION1/subnetworks/SUBNET1,projects/PROJECT_ID/regions/LOCATION2/subnetworks/SUBNET2" \
{ --instance-size=INSTANCE_SIZE | --scaling-factor=SCALING_FACTOR } \
  --endpoint-protocol=thrift

또는 다음 명령어와 같이 네트워크 설정을 파일에 저장할 수 있습니다.

gcloud metastore services create SERVICE \
  --location=MULTI_REGION \
  --network-config-from-file=NETWORK_CONFIG_FROM_FILE
{ --instance-size=INSTANCE_SIZE | --scaling-factor=SCALING_FACTOR } \
  --endpoint-protocol=thrift

다음을 바꿉니다.

  • SERVICE: Dataproc Metastore 서비스 이름
  • MULTI_REGION: Dataproc Metastore 서비스를 만들려는 멀티 리전입니다.
  • PROJECT_ID: Dataproc Metastore 서비스를 만들려는 Google Cloud 프로젝트 ID입니다.
  • SUBNET1,SUBNET2: 멀티 리전 구성을 형성하는 서브네트워크 목록입니다. ID, 정규화된 URL 또는 서브네트워크의 상대 이름을 사용할 수 있습니다. 서브네트워크를 최대 6개까지 지정할 수 있습니다.
  • LOCATION1,LOCATION2: 멀티 리전 구성을 형성하는 위치 목록입니다. 위치의 ID를 사용할 수 있습니다. 예를 들어 nam7 멀티 리전의 경우 us-central1us-east4를 사용합니다.
  • NETWORK_CONFIG_FROM_FILE: 네트워크 구성이 포함된 YAML 파일의 경로입니다.
  • INSTANCE_SIZE: 멀티 리전 Dataproc Metastore의 인스턴스 크기입니다. 예를 들면 small, medium 또는 large입니다. INSTANCE_SIZE 값을 지정하면 SCALING_FACTOR 값을 지정하지 않습니다.
  • SCALING_FACTOR: Dataproc Metastore 서비스의 확장 인수입니다. 예를 들면 0.1입니다. SCALING_FACTOR 값을 지정하면 INSTANCE_SIZE 값을 지정하지 않습니다.

REST

멀티 리전 Dataproc Metastore 서비스를 만드는 방법을 알아보려면 Google API 탐색기를 사용하여 서비스 만들기 안내를 따르세요.

멀티 리전 서비스를 구성하려면 Network Config 객체에 다음 정보를 제공합니다.

  "network_config": {
    "consumers": [
        {"subnetwork": "projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET1"},
        {"subnetwork": "projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET2"}
    ],
    "scaling_config": {
    "scaling_factor": SCALING_FACTOR
    }
  }

다음을 바꿉니다.

  • PROJECT_ID: Dataproc Metastore 서비스가 포함된 프로젝트의 Google Cloud 프로젝트 ID입니다.
  • LOCATION: Dataproc Metastore 서비스가 있는 Google Cloud 리전
  • SUBNET1,SUBNET2: 멀티 리전 구성을 형성하는 서브네트워크 목록입니다. ID, 정규화된 URL 또는 서브네트워크의 상대 이름을 사용할 수 있습니다. 서브네트워크를 최대 5개까지 지정할 수 있습니다.
  • SCALING_FACTOR: 서비스에 사용할 확장 인수입니다.

Dataproc Metastore를 Dataproc 클러스터에 연결

Dataproc 클러스터에서 멀티 리전 Dataproc Metastore 서비스를 연결하는 방법을 알아보려면 다음 탭 중 하나를 선택합니다.

gRPC

Dataproc 클러스터를 연결하려면 사용 중인 Dataproc Metastore 버전에 해당하는 탭을 선택하세요.

Dataproc Metastore 3.1.2

  1. Dataproc 클러스터에 다음 변수를 만듭니다.

    CLUSTER_NAME=CLUSTER_NAME
    PROJECT_ID=PROJECT_ID
    MULTI_REGION=MULTI_REGION
    DATAPROC_IMAGE_VERSION=DATAPROC_IMAGE_VERSION
    PROJECT=PROJECT
    SERVICE_ID=SERVICE_ID

    다음을 바꿉니다.

    • CLUSTER_NAME: Dataproc 클러스터의 이름입니다.
    • PROJECT_ID: Dataproc 클러스터가 포함된 Google Cloud 프로젝트입니다. 사용 중인 서브넷에 이 프로젝트에 액세스할 수 있는 적절한 권한이 있는지 확인합니다.
    • MULTI_REGION: Dataproc 클러스터를 만들려는 Google Cloud 멀티 리전입니다.
    • DATAPROC_IMAGE_VERSION: Dataproc Metastore 서비스에서 사용 중인 Dataproc 이미지 버전입니다. 2.0 이상의 이미지 버전을 사용해야 합니다.
    • PROJECT: Dataproc Metastore 서비스가 포함된 프로젝트입니다.
    • SERVICE_ID: Dataproc Metastore 서비스의 서비스 ID입니다.
  2. 클러스터를 만들려면 다음 gcloud dataproc clusters create 명령어를 실행합니다. --enable-kerberos는 선택사항입니다. 클러스터에 kerberos를 사용하는 경우에만 이 옵션을 포함합니다.

    gcloud dataproc clusters create ${CLUSTER_NAME} \
     --project ${PROJECT_ID} \
     --region ${MULTI_REGION} \
     --image-version ${DATAPROC_IMAGE_VERSION} \
     --scopes "https://www.googleapis.com/auth/cloud-platform" \
     --dataproc-metastore projects/${PROJECT}/locations/${MULTI_REGION}/services/${SERVICE_ID} \
    [ --enable-kerberos ]

Dataproc Metastore 2.3.6

  1. Dataproc Metastore 서비스에 다음 변수를 만듭니다.

    METASTORE_PROJECT=METASTORE_PROJECT
    METASTORE_ID=METASTORE_ID
    MULTI_REGION=MULTI_REGION
    SUBNET=SUBNET

    다음을 바꿉니다.

    • METASTORE_PROJECT: Dataproc Metastore 서비스가 포함된 Google Cloud 프로젝트입니다.
    • METASTORE_ID: Dataproc Metastore 서비스의 서비스 ID입니다.
    • MULTI_REGION: Dataproc Metastore 서비스에 사용할 멀티 리전 위치입니다.
    • SUBNET: Dataproc Metastore 서비스에 사용하는 서브넷 중 하나입니다. 또는 서비스에 사용되는 서브네트워크의 상위 VPC 네트워크에 있는 모든 서브네트워크입니다.
  2. Dataproc 클러스터에 다음 변수를 만듭니다.

    CLUSTER_NAME=CLUSTER_NAME
    DATAPROC_PROJECT=DATAPROC_PROJECT
    DATAPROC_REGION=DATAPROC_REGION
    HIVE_VERSION=HIVE_VERSION
    IMAGE_VERSION=r>IMAGE_VERSION
    

    다음을 바꿉니다.

    • CLUSTER_NAME: Dataproc 클러스터의 이름입니다.
    • DATAPROC_PROJECT: Dataproc 클러스터가 포함된 Google Cloud 프로젝트입니다. 사용 중인 서브넷에 이 프로젝트에 액세스할 수 있는 적절한 권한이 있는지 확인합니다.
    • DATAPROC_REGION: Dataproc 클러스터를 만들려는 Google Cloud 리전입니다.
    • HIVE_VERSION: Dataproc Metastore 서비스에서 사용하는 Hive 버전입니다.
    • IMAGE_VERSION: Dataproc Metastore 서비스에서 사용 중인 Dataproc 이미지 버전입니다.
      • Hive Metastore 버전 2.0의 경우 이미지 버전 1.5를 사용합니다.
      • Hive Metastore 버전 3.1.2의 경우 이미지 버전 2.0을 사용합니다.
  3. Dataproc Metastore 서비스의 웨어하우스 디렉터리를 검색하고 변수에 저장합니다.

    WAREHOUSE_DIR=$(gcloud metastore services describe "${METASTORE_ID}" --project "${METASTORE_PROJECT}" --location "${MULTI_REGION}" --format="get(hiveMetastoreConfig.configOverrides[hive.metastore.warehouse.dir])")
  4. 멀티 리전 Dataproc Metastore로 구성된 Dataproc 클러스터를 만듭니다.

    gcloud dataproc clusters create ${CLUSTER_NAME} \
        --project "${DATAPROC_PROJECT}" \
        --region ${DATAPROC_REGION} \
        --scopes "https://www.googleapis.com/auth/cloud-platform" \
        --subnet "${SUBNET}" \
        --optional-components=DOCKER \
        --image-version ${IMAGE_VERSION} \
        --metadata "hive-version=${HIVE_VERSION},dpms-name=${DPMS_NAME}" \
        --properties "hive:hive.metastore.uris=thrift://localhost:9083,hive:hive.metastore.warehouse.dir=${WAREHOUSE_DIR}" \
        --initialization-actions gs://metastore-init-actions/mr-metastore-grpc-proxy/metastore-grpc-proxy.sh

Thrift

옵션 1: hive-site.xml 파일 수정하기

  1. Dataproc Metastore 서비스의 엔드포인트 URI웨어하우스 디렉터리를 찾습니다. 노출된 엔드포인트 중 하나를 선택할 수 있습니다.
  2. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
  3. 가상 머신 인스턴스 목록의 Dataproc 기본 노드(.*-m) 행에서 SSH를 클릭합니다.

    노드의 홈 디렉터리에 브라우저 창이 열립니다.

  4. /etc/hive/conf/hive-site.xml 파일을 엽니다.

    sudo vim /etc/hive/conf/hive-site.xml
    

    다음과 비슷한 출력이 표시됩니다.

    <property>
        <name>hive.metastore.uris</name>
        <value>ENDPOINT_URI</value>
    </property>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>WAREHOUSE_DIR</value>
    </property>
    

    다음을 바꿉니다.

  5. HiveServer2를 다시 시작합니다.

    sudo systemctl restart hive-server2.service
    

옵션 2: gcloud CLI 사용

다음 gcloud CLI gcloud dataproc clusters create 명령어를 실행합니다.

  1. Dataproc Metastore 서비스의 엔드포인트 URI웨어하우스 디렉터리를 찾습니다. 노출된 엔드포인트 중 하나를 선택할 수 있습니다.
gcloud dataproc clusters create CLUSTER_NAME \
    --network NETWORK \
    --project PROJECT_ID \
    --scopes "https://www.googleapis.com/auth/cloud-platform" \
    --image-version IMAGE_VERSION \
    --properties "hive:hive.metastore.uris=ENDPOINT,hive:hive.metastore.warehouse.dir=WAREHOUSE_DIR"

다음을 바꿉니다.

  • CLUSTER_NAME: Dataproc 클러스터의 이름입니다.
  • NETWORK: Dataproc 클러스터가 포함된 Google Cloud 프로젝트입니다. 사용 중인 서브넷에 이 프로젝트에 액세스할 수 있는 적절한 권한이 있는지 확인합니다.
  • PROJECT_ID: Dataproc Metastore 서비스에서 사용하는 Hive 버전입니다.
  • IMAGE_VERSION: Dataproc Metastore 서비스에서 사용 중인 Dataproc 이미지 버전입니다.
    • Hive Metastore 버전 2.0의 경우 이미지 버전 1.5를 사용합니다.
    • Hive Metastore 버전 3.1.2의 경우 이미지 버전 2.0을 사용합니다.
  • ENDPOINT: Dataproc Metastore가 사용하는 Thrift 엔드포인트입니다.
  • WAREHOUSE_DIR: Dataproc Metastore의 웨어하우스 디렉터리입니다.

다음 단계