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

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

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

始める前に

  • 最適なネットワーク接続を実現するには、Dataproc Metastore サービスと同じリージョン内に Dataproc クラスタを作成する必要があります。

  • Dataproc イメージと Dataproc Metastore Hive のバージョンは互換性がある必要があります。

    • Dataproc 2.x イメージには、Hive 3.1.2 で作成された Dataproc Metastore サービスが必要です。

    • Dataproc 1.x イメージには、Hive 2.3.6 または 3.1.2 で作成された Dataproc Metastore サービスが必要ですが、2.3.6 では最適に動作します。

    Dataproc イメージ バージョンの詳細や、Dataproc イメージで使用されている Hive のバージョンを確認するには、Dataproc のバージョニングをご覧ください。

  • プロジェクト間のデプロイを使用している場合は、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 サービスは、ピアリングされたネットワーク全体の Dataproc クラスタに接続できます。そうするには、gcloud dataproc clusters create CLUSTER_NAME を使用するときに次の Hive プロパティの構成ファイルのセットアップを指定する必要があります。

      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 Metastore サービスを使用する Dataproc クラスタの接続

Dataproc クラスタは、サービスを作成した後に、Google Cloud Console、gcloud ツール、または Dataproc API を使用して、作成および接続でき、作成したサービスを Hive メタストアとして使用します。

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

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 クラスタの作成

次の手順では、Google Cloud Console、gcloud ツール、または Dataproc Metastore API を使用して 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 の値

次のステップ