Datapoc またはセルフマネージドのクラスタの接続

Dataproc クラスタは、Dataproc Metastore サービスを作成した後に作成、接続でき、そのサービスを Hive メタストアとして使用します。

クライアント構成ファイルを変更することで Hive メタストアとして Dataproc Metastore サービスを使用するセルフマネージドの Apache Hive / Apache Spark / Presto クラスタを接続することもできます。

始める前に

  • 最適なネットワーク接続性のために、Dataproc Metastore サービスと同じリージョンに Dataproc クラスタを作成します。

  • Dataproc イメージと Dataproc Metastore Hive のバージョン間には互換性があることが必要です。次のイメージ バージョニング ページを確認して、Hive バージョンに互換性があることを確認してください。

    詳細については、Dataproc イメージのバージョン リストをご覧ください。

  • Dataproc Metastore サービス(Dataproc クラスタと同じプロジェクトにあるサービスを含む)を使用するには、クラスタとメタストアが同じネットワーク上にある必要があります。

    • gcloud dataproc clusters create CLUSTER_NAME を使用するときに、次の Hive プロパティ構成設定を指定することで、ピアリングされたネットワーク全体の Dataproc クラスタに Dataproc Metastore サービスをアタッチできます。

      gcloud dataproc clusters create CLUSTER_NAME \
          --properties="hive:hive.metastore.uris=$ENDPOINT_URI,hive:hive.metastore.warehouse.dir=$WAREHOUSE_DIR/hive-warehouse"
      

      Dataproc Metastore サービスを使用するセルフ マネージド クラスタの接続をご覧ください。

    • 1 つのクラスタには、メタストアのネットワークのサブネットを使用することもできます。ネットワーク プロジェクトからサブネットワークを使用してクラスタを作成するには、共有ネットワーク権限を構成する必要があります。

アクセス制御

  • Dataproc VM サービス アカウントに、Dataproc Metastore ウェアハウス ディレクトリにアクセスするためのオブジェクト読み取り/書き込み権限があることを確認します。詳しくは、Hive ウェアハウス ディレクトリをご覧ください。

  • プロジェクト間のデプロイを使用している場合は、Dataproc Metastore クラスタを作成する前に追加の権限を設定する必要があります。プロジェクト間のデプロイは、クラスタ プロジェクト内の Dataproc クラスタ、メタストア プロジェクト内の Dataproc Metastore サービス、前の 2 つのいずれかのプロジェクト内か、独自のネットワーク プロジェクト内のネットワークを持つ 2~3 件のプロジェクトで構成できます。また、Dataproc クラスタと Dataproc Metastore サービスで、ネットワークが独自のネットワーク プロジェクト内に存在する間、プロジェクトを共有することもできます。

    次の図は、Dataproc Metastore クラスタのデプロイ時における、あるプロジェクト構成の概要を示しています。

    Dataproc Metastore と Dataproc クラスタのデプロイ時における、あるプロジェクト構成の概要

    • そのサービスとは異なる別のプロジェクトに属する VPC ネットワークを使用する場合は、gcloud metastore services create SERVICE に相対的なリソース名全体を指定する必要があります。

      gcloud metastore services create SERVICE \
          --network=projects/HOST_PROJECT/global/networks/NETWORK_ID
      

Dataproc Metastore サービスを使用する Dataproc クラスタの接続

Dataproc Metastore サービスを Hive メタストアとして使用する Dataproc クラスタを作成してアタッチできます。

プロジェクト間のデプロイを設定する

Dataproc クラスタと Dataproc Metastore サービスが別々のプロジェクトにあるプロジェクト間のデプロイには、権限設定が必要です。ネットワークがそれ自身のネットワーク プロジェクトにあり、Dataproc クラスタと Dataproc Metastore サービスがプロジェクトを共有する場合、この設定は行う必要がありません。

ネットワーク権限を構成した後は、メタストア プロジェクトの Dataproc Metastore 閲覧者ロールを、クラスタ プロジェクトの Dataproc サービス エージェントに付与する必要があります。Dataproc サービス エージェント アカウントは、service-<cluster-project-number>@dataproc-accounts.iam.gserviceaccount.com の形式で存在します。クラスタ プロジェクトのプロジェクト番号を参照する必要があります。

Console

プロジェクト番号を確認するには:

  1. [IAM と管理] の [設定] タブに移動します。

  2. ページの上部にあるプロジェクト リストで、Dataproc クラスタの作成に使用するプロジェクトを選択します。

  3. プロジェクト番号を書き留めます。

権限を構成します。

  1. [IAM] タブに移動します。

  2. ページの上部にあるプロジェクト リストで、メタストア プロジェクトを選択します。

  3. [Add] をクリックします。

    1. [新しいメンバー] 項目にサービス アカウントを入力します。

    2. [ロール] メニューから、[Dataproc Metastore] > [Dataproc Metastore 閲覧者] の順に選択します。

    3. [Add] をクリックします。

これで、メタストア プロジェクトの Dataproc Metastore サービスと、そのサービスが有効なネットワークまたはサブネットワークで Dataproc クラスタを作成できます。

Dataproc クラスタの作成

次の手順では、Dataproc クラスタを作成してアタッチする方法を示します。

Console

  1. Cloud Console で、Dataproc の [クラスタの作成] ページを開きます。

    Cloud Console で [クラスタの作成] ページを開く

  2. [クラスタ名] フィールドに入力します。

  3. [リージョン] および [ゾーン] メニューで、クラスタのリージョンとゾーンを選択します。個別のリージョンを選択して、指定したリージョン内のリソースとメタデータの保存場所を分離できます。個別のリージョンを選択した場合は、ゾーンとして [指定しない] を選択することで、選択したリージョン内のゾーンが Dataproc により選択されるようにできます(Dataproc の自動ゾーン プレースメントをご覧ください)。

  4. [クラスタのカスタマイズ] タブをクリックします。

  5. [ネットワーク構成] セクションで、メタストア サービスの作成時に指定した同じネットワークを選択します。

  6. [Dataproc Metastore] セクションで、メタストア サービスを選択します。まだ作成していない場合は、[新しいサービスを作成] を選択します。

  7. [作成] をクリックしてクラスタを作成します。

新しいクラスタが [クラスタ] リストに表示されます。クラスタが使用可能になるまで、クラスタのステータスは [プロビジョニング] と表示されます。その後、ステータスは [実行中] に変わります。

gcloud

次のgcloud dataproc clusters createコマンドを実行してクラスタを作成します。

 gcloud dataproc clusters create CLUSTER_NAME \
    --dataproc-metastore=projects/PROJECT_ID/locations/LOCATION/services/SERVICE \
    --region=LOCATION
 

CLUSTER_NAME は、新しいクラスタの名前に置き換えます。

PROJECT_ID は、Dataproc Metastore サービスを作成したプロジェクトのプロジェクト ID に置き換えます。

LOCATION は、Dataproc Metastore サービス用に指定したものと同じリージョンに置き換えます。

SERVICE は、Dataproc Metastore サービス名に置き換えます。

REST

API Explorer を使用し、API の手順に従ってクラスタを作成します。

Dataproc Metastore サービスを使用するセルフ マネージド クラスタの接続

サービスを作成した後、以下の対象をクライアント構成ファイルに設定することで、Hive メタストアとしてサービスを使用するセルフマネージドの Apache Hive / Apache Spark / Presto クラスタを接続することもできます。

hive.metastore.uris=ENDPOINT_URI
hive.metastore.warehouse.dir=WAREHOUSE_DIR

以下を置き換えます。

  • ENDPOINT_URI: メタストア サービスへのアクセスに使用される Hive メタストア エンドポイントの URI。

    使用するエンドポイント URI の値を確認するには、[Dataproc Metastore] ページでサービス名をクリックします。これにより、そのサービスのサービスの詳細ページが表示されます。このページでは、thrift:// で始まる URL 値を使用できます。

  • WAREHOUSE_DIR: Hive メタストア構成のオーバーライド先のディレクトリを参照します。形式 gs://.*hive-warehouse に従うことができます。

    使用するウェアハウス ディレクトリを確認するには、Dataproc Metastore ページで、サービス名をクリックします。すると、サービスの詳細ページが開き、[Metastore config overrides] の配下にある [hive.metastore.warehouse.dir] の値を使用できます。

サービス詳細の URL と hive.metastore.warehouse.dir の値

次のステップ