マルチリージョンの 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 サービスを作成する

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

gRPC

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

Console

  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-central1 リージョンと us-east4 リージョンの両方を指定する必要があります。

Console

  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 のウェアハウス ディレクトリ。

カスタム リージョン構成

カスタム リージョン構成を使用するように Dataproc Metastore サービスを構成できます。

カスタム リージョン構成を使用すると、サービスは 2 つの個別のリージョンからワークロードを実行できます。これにより、リージョン間の冗長性が確保されます。つまり、ワークロードはジョブの実行時にどちらのリージョンにもアクセスできます。また、サービスのフェイルオーバー メカニズムも提供します。たとえば、いずれかのリージョン エンドポイントが停止した場合、ワークロードは自動的に別のリージョンにルーティングされます。これにより、ワークロードとジョブの中断を防ぐことができます。

カスタム リージョン構成を使用すると、メタデータの保存場所と Hive Metastore エンドポイントの公開場所を制御することもできます。これにより、ワークロードの処理時のパフォーマンスが向上します。

考慮事項

カスタム リージョン構成で構成された Dataproc Metastore サービスには、次の点を考慮する必要があります。

  • リージョン / ペア設定の制限: すべてのリージョンと組み合わせが許可されているわけではありません。
  • 読み取り専用の制限事項: 読み取り専用リージョンは書き込みオペレーションを受け入れません。 読み取り専用リージョンが選択され、読み取り / 書き込みリージョンに到達できない場合、書き込みは処理されません。
  • 構成の不変性: 設定したリージョン構成は変更できません。
  • 米国スタックのみ: カスタム デュアルリージョンは US スタックのみをサポートし、米国の境界に限定されます。

カスタム リージョン サービスを作成する

カスタム リージョンを設定するには、サービスを作成するときに 2 つの隣接するリージョンを選択します。この組み合わせは、2 つの読み取り / 書き込みリージョン、または 1 つの読み取り / 書き込みリージョンと 1 つの読み取り専用リージョンのいずれかです。

コンソール

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

    Dataproc Metastore に移動

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

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

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

  4. [Pricing and Capacity] セクションで、[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

以下を置き換えます。

次のステップ