マルチリージョン Dataproc Metastore サービスを設定する

このページでは、マルチリージョンの Dataproc Metastore サービスを設定する方法について説明します。マルチリージョン Dataproc Metastore サービスの仕組みについては、Dataproc Metastore リージョンをご覧ください。

準備

必要なロール

マルチリージョンの Dataproc Metastore サービスの作成に必要な権限を取得するには、最小権限の原則に基づいて、プロジェクトで次の IAM のロールを付与するよう管理者に依頼してください。

ロールの付与の詳細については、アクセスの管理をご覧ください。

この事前定義ロールには、マルチリージョンの Dataproc Metastore サービスを作成するために必要な metastore.services.create 権限が含まれています。

カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。

Dataproc Metastore の特定のロールと権限については、IAM によるアクセス管理をご覧ください。

マルチリージョンの Dataproc Metastore サービスについて

マルチリージョンの Dataproc Metastore サービスは、データを 2 つの異なるリージョンに保存し、これらの 2 つのリージョンを使用してワークロードを実行します。たとえば、マルチリージョン nam7 には us-central1 リージョンと us-east4 リージョンが含まれます。

  • マルチリージョンの Dataproc Metastore サービスは、2 つのリージョンにまたがってメタデータを複製し、関連するエンドポイントを公開して Hive Metastore にアクセスします。gRPC の場合、リージョンごとに 1 つのエンドポイントが公開されます。Thrift の場合、サブネットワークごとに 1 つのエンドポイントが公開されます。

  • マルチリージョンの Dataproc Metastore サービスは、アクティブ - アクティブ高可用性(HA)クラスタ構成を提供します。この構成は、ワークロードはジョブの実行時にどちらのリージョンにもアクセスできることを意味します。また、サービスのフェイルオーバー メカニズムも提供します。たとえば、プライマリ リージョン エンドポイントが停止した場合、ワークロードは自動的にセカンダリ リージョンにルーティングされます。これは、Dataproc ジョブの中断を防ぐために役立ちます。

考慮事項

マルチリージョン Dataproc Metastore サービスには、次の点を考慮する必要があります。

マルチリージョンの Dataproc Metastore サービスを作成する

次のいずれかのタブを選択して、Thrift または gRPC エンドポイント プロトコルを使用して Dataproc Metastore サービス 2 でマルチリージョン サービスを作成する方法を学習します。

gRPC

gRPC エンドポイント プロトコルを使用するマルチリージョン サービスを作成する場合は、特定のネットワーク設定を行う必要はありません。gRPC プロトコルがネットワーク ルーティングを処理します。

コンソール

  1. Google Cloud コンソールで、[Dataproc Metastore] ページに移動します。

    Dataproc Metastore に移動

  2. ナビゲーション バーで、[+作成] をクリックします。

    [Metastore サービスを作成する] ダイアログが開きます。

  3. [Dataproc Metastore 2] を選択します。

  4. [Pricing and Capacity] セクションで、[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 のインスタンス サイズ。たとえば、smallmediumlarge などです。INSTANCE_SIZE の値を指定する場合は、SCALING_FACTOR の値を指定しないでください。
  • SCALING_FACTOR: Dataproc Metastore サービスのスケーリング ファクタ。例: 0.1SCALING_FACTOR の値を指定する場合は、INSTANCE_SIZE の値を指定しないでください。

Thrift

Thrift エンドポイント プロトコルを使用するマルチリージョン サービスを作成する場合は、適切なサブネットワークを設定する必要があります。この場合、使用している VPC ネットワークごとに、各リージョンから少なくとも 1 つのサブネットワークを指定する必要があります。

たとえば、nam7 マルチリージョンを作成するには、us-central1us-east4 の両方のリージョンを指定する必要があります。

コンソール

  1. Google Cloud コンソールで、[Dataproc Metastore] ページに移動します。

    Dataproc Metastore に移動

  2. ナビゲーション バーで、[+作成] をクリックします。

    [Metastore サービスを作成する] ダイアログが開きます。

  3. [Dataproc Metastore 2] を選択します。

  4. [Pricing and Capacity] セクションで、[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。
  • SUBNET1SUBNET2: マルチリージョン構成を形成するサブネットワークのリスト。サブネットワークの ID、完全修飾 URL、または相対名を使用できます。最大 6 つまでのサブネットワークを指定できます。
  • LOCATION1LOCATION2: マルチリージョン構成を形成するロケーションのリスト。ロケーションの ID を使用できます。たとえば、nam7 マルチリージョンの場合は、us-central1us-east4 を使用します。
  • NETWORK_CONFIG_FROM_FILE: ネットワーク構成を含む YAML ファイルへのパス。
  • INSTANCE_SIZE: マルチリージョン Dataproc Metastore のインスタンス サイズ。たとえば、smallmediumlarge などです。INSTANCE_SIZE の値を指定する場合は、SCALING_FACTOR の値を指定しないでください。
  • SCALING_FACTOR: Dataproc Metastore サービスのスケーリング ファクタ。例: 0.1SCALING_FACTOR の値を指定する場合は、INSTANCE_SIZE の値を指定しないでください。

REST

マルチリージョン Dataproc Metastore サービスを作成する方法については、Google API Explorer を使用してサービスの作成手順に従ってください。

マルチリージョン サービスを構成するには、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 リージョン。
  • SUBNET1SUBNET2: マルチリージョン構成を形成するサブネットワークのリスト。サブネットワークの 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 サービスに使用するサブネットのうちの 1 つ。または、サービスに使用されるサブネットワークの親 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 のウェアハウス ディレクトリ。

次のステップ