Managed Service for Apache Spark クラスタまたはセルフマネージド クラスタを接続する

Dataproc Metastore サービスを作成したら、次のサービスを接続できます。

  • Managed Service for Apache Spark クラスタ。
  • セルフマネージドの Apache Hive インスタンス、Apache Spark インスタンス、または Presto クラスタ。

これらのサービスのいずれかに接続すると、クエリの実行時に Dataproc Metastore サービスが Hive メタストアとして使用されます。

始める前に

必要なロール

Dataproc Metastore と Managed Service for Apache Spark クラスタの作成に必要な権限を取得するには、管理者に次の IAM ロールの付与を依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、Dataproc Metastore と Managed Service for Apache Spark クラスタの作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

Dataproc Metastore と Managed Service for Apache Spark クラスタを作成するには、次の権限が必要です。

  • Dataproc Metastore を作成するには: ユーザー アカウントまたはサービス アカウントに対する metastore.services.create
  • Managed Service for Apache Spark クラスタを作成するには: ユーザー アカウントまたはサービス アカウントに対する dataproc.clusters.create
  • Hive ウェアハウス ディレクトリにアクセスするには: Managed Service for Apache Spark VM サービス アカウントに対する orgpolicy.policy.get1resourcemanager.projects.getresourcemanager.projects.liststorage.objects.*storage.multipartUploads.*

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

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

Managed Service for Apache Spark クラスタ

Managed Service for Apache Spark は、オープンソースのデータツールを利用したバッチ処理、クエリ実行、ストリーミング、ML を可能にする Apache Spark / Apache Hadoop サービスです。

考慮事項

Managed Service for Apache Spark クラスタを作成して接続する前に、Dataproc Metastore サービスで使用されているエンドポイント プロトコルを確認します。このプロトコルは、Hive Metastore クライアントが Dataproc Metastore に保存されているメタデータにアクセスする方法を定義します。この選択は、サービスに統合して使用できる機能にも影響する可能性があります。

Apache Thrift

Apache Thrift エンドポイント プロトコルを使用する場合は、次のネットワーク要件を考慮してください。

  • デフォルトでは、Managed Service for Apache Spark クラスタと Dataproc Metastore サービスは同じネットワーク上に作成する必要があります。Managed Service for Apache Spark クラスタは、Dataproc Metastore サービスのネットワークのサブネットを使用することもできます。

  • Managed Service for Apache Spark クラスタがネットワークとは異なるプロジェクトに属している場合は、共有ネットワークの権限を構成する必要があります。

  • Managed Service for Apache Spark クラスタが Dataproc Metastore サービスとは異なるプロジェクトに属している場合は、Managed Service for Apache Spark クラスタを作成する前に追加の権限を設定する必要があります。

gRPC

gRPC エンドポイント プロトコルを使用する場合は、次のネットワーク要件を考慮してください。

  • gRPC エンドポイント プロトコルを使用して Dataproc Metastore を作成したら、追加の IAM ロールを付与する必要があります。

  • Dataproc 個人用クラスタ認証を使用している場合、Dataproc Metastore は gRPC エンドポイント プロトコルを使用する必要があります。

  • Managed Service for Apache Spark クラスタが Dataproc Metastore サービスとは異なるプロジェクトに属している場合は、Managed Service for Apache Spark クラスタを作成する前に追加の権限を設定する必要があります。

クラスタを作成して Dataproc Metastore を接続する

次の手順では、Managed Service for Apache Spark クラスタを作成し、Dataproc Metastore サービスから接続する方法を示します。これらの手順は、Dataproc Metastore サービスを作成していることを前提としています。

  • Managed Service for Apache Spark クラスタを作成する前に、選択した Managed Service for Apache Spark イメージが、Dataproc Metastore の作成時に選択した Hive メタストアのバージョンと互換性があることを確認してください。詳細については、Managed Service for Apache Spark イメージ バージョン リストをご覧ください。
  • ネットワーク接続を最適化するには、Dataproc Metastore サービスと同じリージョンに Managed Service for Apache Spark クラスタを作成します。

コンソール

  1. Google Cloud コンソールで、Managed Service for Apache Spark の [クラスタの作成] ページを開きます。

    [クラスタを作成] を開きます。

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

  3. [リージョン] メニューと [ゾーン] メニューで、Dataproc Metastore サービスを作成したリージョンと同じリージョンを選択します。任意のゾーンを選択できます。

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

  5. [ネットワーク構成] セクションで、Dataproc Metastore サービスを作成したネットワークと同じネットワークを選択します。

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

  7. 省略可: Dataproc Metastore サービスが gRPC エンドポイント プロトコルを使用している場合:

    1. [セキュリティを管理] タブをクリックします。
    2. [プロジェクト アクセス] セクションで、[このクラスタのクラウド プラットフォーム スコープを有効にする] を選択します。
  8. 必要に応じて、残りのサービス オプションを構成します。

  9. クラスタを作成するには、[作成] をクリックします。

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

gcloud CLI

クラスタを作成して Dataproc Metastore を接続するには、次の gcloud dataproc clusters create コマンドを実行します。

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

次のように置き換えます。

  • CLUSTER_NAME: 新しい Managed Service for Apache Spark クラスタの名前。
  • PROJECT_ID: Dataproc Metastore サービスを作成したプロジェクトのプロジェクト ID。
  • LOCATION: Dataproc Metastore サービスを作成したリージョン。
  • SERVICE: クラスタに接続する Dataproc Metastore サービスの名前。
  • SCOPES:(省略可)Dataproc Metastore サービスが gRPC エンドポイント プロトコルを使用している場合は、cloud-platform を使用します。

REST

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

Managed Service for Apache Spark クラスタのプロパティを使用してクラスタを接続する

Managed Service for Apache Spark プロパティを使用して、Managed Service for Apache Spark クラスタを Dataproc Metastore に接続することもできます。これらのプロパティには、Dataproc Metastore の ENDPOINT_URIWAREHOUSE_DIR が含まれます。

Dataproc Metastore サービスが Private Service Connect を使用している場合、または Managed Service for Apache Spark クラスタを Dataproc Metastore サービスの補助バージョンに接続する必要がある場合は、次の手順を使用します。

ENDPOINT_URI プロパティと WAREHOUSE_DIR プロパティを使用して Managed Service for Apache Spark クラスタを接続するには、次の 2 つの方法があります。

オプション 1: Managed Service for Apache Spark クラスタの作成時

Managed Service for Apache Spark クラスタを作成するときに、次の Hive 構成で properties フラグを使用します。

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

次のように置き換えます。

オプション 2: hive-site.xml ファイルを更新する

クラスタの hive-site.xml ファイルを直接変更して、Managed Service for Apache Spark クラスタを接続することもできます。

  1. SSH を使用して .*-m クラスタに接続します。
  2. /etc/hive/conf/hive-site.xml ファイルを開き、次の行を変更します。

    <property>
       <name>hive.metastore.uris</name>
       <!-- Update this value. -->
       <value>ENDPOINT_URI</value>
    </property>
    <!-- Add this property entry. -->
    <property>
       <name>hive.metastore.warehouse.dir</name>
       <value>WAREHOUSE_DIR</value>
    </property>
    

    以下を置き換えます。

  3. HiveServer2 を再起動します。

    sudo systemctl restart hive-server2.service
    

セルフマネージド クラスタ

セルフマネージド クラスタは、Apache Hive インスタンス、Apache Spark インスタンス、または Presto クラスタにできます。

セルフマネージド クラスタを接続する

クライアント構成ファイルに次の値を設定します。

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

以下を置き換えます。

次のステップ