멀티 리전 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 클러스터에 Dataproc Metastore 연결

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의 웨어하우스 디렉터리입니다.

커스텀 리전 구성

커스텀 리전 구성을 사용하도록 Dataproc Metastore 서비스를 구성할 수 있습니다.

커스텀 리전 구성을 사용하면 서비스가 두 개의 개별 리전에서 워크로드를 실행할 수 있습니다. 이렇게 하면 리전 간에 중복성이 제공되므로 워크로드가 작업을 실행할 때 두 리전 중 하나에 액세스할 수 있습니다. 또한 서비스에 장애 조치 메커니즘을 제공합니다. 예를 들어 리전 엔드포인트 중 하나가 다운되면 워크로드가 자동으로 다른 리전으로 라우팅됩니다. 이렇게 하면 워크로드와 작업이 중단되는 것을 방지할 수 있습니다.

커스텀 리전 구성을 사용하면 메타데이터를 저장하는 위치와 Hive Metastore 엔드포인트를 노출할 위치도 제어할 수 있습니다. 따라서 워크로드를 처리할 때 성능이 개선될 수 있습니다.

고려사항

커스텀 리전 구성으로 구성된 Dataproc Metastore 서비스에는 다음 고려사항이 적용됩니다.

  • 리전/페어링 제한사항: 일부 리전 및 조합은 허용되지 않습니다.
  • 읽기 전용 제한사항: 읽기 전용 리전은 쓰기 작업을 허용하지 않습니다. 읽기 전용 리전이 선택되었고 읽기/쓰기 리전에 연결할 수 없으면 쓰기가 처리되지 않습니다.
  • 구성 불변성: 한 번 설정된 후에는 리전 구성을 변경할 수 없습니다.
  • 미국 스택만 해당: 커스텀 이중 리전은 US 스택만 지원하며 미국 경계로 제한됩니다.

커스텀 리전 서비스 만들기

커스텀 리전을 설정하려면 서비스를 만들 때 2개의 인접한 리전을 선택합니다. 읽기-쓰기 리전 2개 또는 읽기-쓰기 리전 1개와 읽기 전용 리전 1개로 조합할 수 있습니다.

콘솔

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

    Dataproc Metastore로 이동

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

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

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

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

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

  6. 데이터 위치미국(대륙)을 선택합니다.

    커스텀 리전 섹션이 표시됩니다.

  7. 커스텀 리전에서 읽기-쓰기 리전과 읽기 전용 리전을 선택합니다.

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

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

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

gcloud

커스텀 리전으로 Dataproc Metastore 서비스를 만들려면 다음 gcloud CLI gcloud beta metastore services create 명령어를 실행합니다.

gcloud beta metastore services create SERVICE \
  --read-write-regions

다음을 바꿉니다.

  • SERVICE: Dataproc Metastore 서비스 이름입니다.
  • READ_WRITE_REGIONS: 커스텀 리전 구성의 일부로 지원되는 읽기 쓰기 리전입니다.
  • READ_ONLY_REGIONS: 커스텀 리전 구성의 일부로 지원되는 읽기 전용 리전입니다.

다음 단계