このページでは、マルチリージョンの Dataproc Metastore サービスを設定する方法について説明します。マルチリージョンの Dataproc Metastore サービスの動作の詳細については、Dataproc Metastore リージョンをご覧ください。
準備
- プロジェクトで Dataproc Metastore を有効にします。
- プロジェクトに特有のネットワーキング要件を理解します。
- Dataproc Metastore のリージョンについて学習し、適切なリージョンを選択します。
必要なロール
マルチリージョンの Dataproc Metastore サービスの作成に必要な権限を取得するには、最小権限の原則に基づいて、プロジェクトに対する次の IAM のロールを付与するよう管理者に依頼してください。
-
Dataproc Metastore リソースに対する完全アクセス権を付与する(
roles/metastore.editor
) -
IAM ポリシー管理を含むすべての Dataproc Metastore リソースに対する完全アクセス権を付与する(
roles/metastore.admin
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
この事前定義ロールには、マルチリージョンの 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 サービスには、次の点を考慮する必要があります。
マルチリージョン サービスは Spanner データベース タイプのみをサポートしています。マルチリージョン サービスを作成する前に、サポートされている機能のリストを確認してください。
マルチリージョン サービスは、Dataproc Metastore 2 構成のみをサポートします。
マルチリージョン サービスは、Cloud Storage のマルチリージョンのロケーションにアーティファクト バケットを作成します。たとえば、
Nam7
バケットはUS
マルチリージョン ロケーションに作成されます。
マルチリージョンの Dataproc Metastore サービスを作成する
次のいずれかのタブを選択して、Dataproc Metastore サービス 2 で Thrift または gRPC エンドポイント プロトコルを使用してマルチリージョン サービスを作成する方法を確認してください。
gRPC
gRPC エンドポイント プロトコルを使用するマルチリージョン サービスを作成する場合は、特定のネットワーク設定を行う必要はありません。gRPC プロトコルがネットワーク ルーティングを処理します。
Console
Google Cloud コンソールで、[Dataproc Metastore] ページに移動します。
ナビゲーション バーで、[+作成] をクリックします。
[Metastore サービスの作成] ダイアログが開きます。
[Dataproc Metastore 2] を選択します。
[Pricing and Capacity] セクションで、[Enterprise Plus - デュアルリージョン] を選択します。
[エンドポイント プロトコル] で [gRPC] を選択します。
サービスを作成して開始するには、[送信] をクリックします。
新しいメタストア サービスが [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 ネットワークごとに、各リージョンから少なくとも 1 つのサブネットを指定する必要があります。
たとえば、nam7
マルチリージョンを作成するには、us-central1
リージョンと us-east4
リージョンの両方を指定する必要があります。
Console
Google Cloud コンソールで、[Dataproc Metastore] ページに移動します。
ナビゲーション バーで、[+作成] をクリックします。
[Metastore サービスの作成] ダイアログが開きます。
[Dataproc Metastore 2] を選択します。
[Pricing and Capacity] セクションで、[Enterprise Plus - デュアルリージョン] を選択します。
詳細については、料金プランとスケーリング構成をご覧ください。
[サービス名] フィールドに、サービスの一意の名前を入力します。
命名規則については、リソースの命名規則をご覧ください。
[エンドポイント プロトコル] で [Thrift] を選択します。
[ネットワーク構成] で、選択したマルチリージョン構成を形成するサブネットワークを指定します。
残りのサービス構成オプションには、指定されたデフォルトを使用します。
サービスを作成して開始するには、[送信] をクリックします。
新しいメタストア サービスが [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-central1
とus-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 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 リージョン。SUBNET1
、SUBNET2
: マルチリージョン構成を形成するサブネットワークのリスト。サブネットワークの ID、完全修飾 URL、または相対名を使用できます。最大 5 つのサブネットワークを指定できます。SCALING_FACTOR
: サービスに使用するスケーリング ファクタ。
Dataproc Metastore を Dataproc クラスタに接続する
次のいずれかのタブを選択して、Dataproc クラスタからマルチリージョンの Dataproc Metastore サービスを接続する方法を確認してください。
gRPC
Dataproc クラスタを接続するには、使用している Dataproc Metastore のバージョンに対応するタブを選択します。
Dataproc Metastore 3.1.2
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。
クラスタを作成するには、次の
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
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 ネットワーク内の任意のサブネットワーク。
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
を使用します。
- Hive Metastore バージョン 2.0 の場合は、イメージ バージョン
Dataproc Metastore サービスのウェアハウス ディレクトリを取得して変数に格納します。
WAREHOUSE_DIR=$(gcloud metastore services describe "${METASTORE_ID}" --project "${METASTORE_PROJECT}" --location "${MULTI_REGION}" --format="get(hiveMetastoreConfig.configOverrides[hive.metastore.warehouse.dir])")
マルチリージョンの 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 ファイルを編集する
- Dataproc Metastore サービスのエンドポイント URI とウェアハウス ディレクトリを見つけます。公開されているエンドポイントのいずれかを選択できます。
- Google Cloud コンソールで、[VM インスタンス] ページに移動します。
仮想マシン インスタンスのリストで、Dataproc プライマリ ノード(
.*-m
)の行の [SSH] をクリックします。ノード上のホーム ディレクトリでブラウザ ウィンドウが開きます。
/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>
以下を置き換えます。
ENDPOINT_URI
: Dataproc Metastore サービスのエンドポイント URI。WAREHOUSE_DIR
: Hive ウェアハウス ディレクトリのロケーション。
HiveServer2 を再起動します。
sudo systemctl restart hive-server2.service
オプション 2: gcloud CLI を使用する
次の gcloud CLI gcloud dataproc clusters create
コマンドを実行します。
- 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
を使用します。
- Hive Metastore バージョン 2.0 の場合は、イメージ バージョン
ENDPOINT
: Dataproc Metastore が使用する Thrift エンドポイント。WAREHOUSE_DIR
: Dataproc Metastore のウェアハウス ディレクトリ。
カスタム リージョン構成
カスタム リージョン構成を使用するように Dataproc Metastore サービスを構成できます。
カスタム リージョン構成を使用すると、サービスは 2 つの個別のリージョンからワークロードを実行できます。これにより、リージョン間の冗長性が確保されます。つまり、ワークロードはジョブの実行時にどちらのリージョンにもアクセスできます。また、サービスのフェイルオーバー メカニズムも提供します。たとえば、いずれかのリージョン エンドポイントが停止した場合、ワークロードは自動的に別のリージョンにルーティングされます。これにより、ワークロードとジョブの中断を防ぐことができます。
カスタム リージョン構成を使用すると、メタデータの保存場所と Hive Metastore エンドポイントの公開場所を制御することもできます。これにより、ワークロードの処理時のパフォーマンスが向上します。
考慮事項
カスタム リージョン構成で構成された Dataproc Metastore サービスには、次の点を考慮する必要があります。
- リージョン / ペア設定の制限: すべてのリージョンと組み合わせが許可されているわけではありません。
- 読み取り専用の制限事項: 読み取り専用リージョンは書き込みオペレーションを受け入れません。 読み取り専用リージョンが選択され、読み取り / 書き込みリージョンに到達できない場合、書き込みは処理されません。
- 構成の不変性: 設定したリージョン構成は変更できません。
- 米国スタックのみ: カスタム デュアルリージョンは
US
スタックのみをサポートし、米国の境界に限定されます。
カスタム リージョン サービスを作成する
カスタム リージョンを設定するには、サービスを作成するときに 2 つの隣接するリージョンを選択します。この組み合わせは、2 つの読み取り / 書き込みリージョン、または 1 つの読み取り / 書き込みリージョンと 1 つの読み取り専用リージョンのいずれかです。
コンソール
Google Cloud コンソールで、[Dataproc Metastore] ページに移動します。
ナビゲーション バーで、[+作成] をクリックします。
[Metastore サービスの作成] ダイアログが開きます。
[Dataproc Metastore 2] を選択します。
[Pricing and Capacity] セクションで、[Enterprise Plus - デュアルリージョン] を選択します。
[サービス名] フィールドに、サービスの一意の名前を入力します。
[データのロケーション] で [米国(大陸)] を選択します。
[カスタム リージョン] セクションが表示されます。
[カスタム リージョン] で、[読み取り / 書き込み] リージョンと [読み取り専用] リージョンを選択します。
残りのサービス構成オプションには、指定されたデフォルトを使用します。
サービスを作成して開始するには、[送信] をクリックします。
新しいメタストア サービスが [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
: カスタム リージョン構成の一部である、サポートされている読み取り専用リージョン。