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

Dataproc Metastore サービスを作成すると、次のいずれかのサービスを接続できます。

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

始める前に

必要なロール

Dataproc Metastore と Dataproc クラスタの作成に必要な権限を取得するには、管理者に次の IAM ロールの付与を依頼します。

  • すべての Dataproc Metastore リソースに対する完全アクセス権を付与するには、次のいずれかを行います。
  • Dataproc クラスタを作成する場合: Dataproc VM サービス アカウントに対する(roles/dataproc.worker
  • Hive ウェアハウス ディレクトリへの読み取り / 書き込み権限を付与する場合: Dataproc VM サービス アカウントに対する(roles/storage.objectAdmin

ロールの付与の詳細については、アクセスの管理をご覧ください。

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

必要な権限

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

  • Dataproc Metastore を作成するには: ユーザー アカウントまたはサービス アカウントの metastore.services.create
  • Dataproc クラスタを作成するには: ユーザー アカウントまたはサービス アカウントに対する dataproc.clusters.create
  • Hive ウェアハウス ディレクトリにアクセスするには: Dataproc VM サービス アカウント に対する orgpolicy.policy.get1,resourcemanager.projects.get,resourcemanager.projects.list,storage.objects.*,storage.multipartUploads.*

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

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

Dataproc クラスタ

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

考慮事項

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

Apache Thrift

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

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

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

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

gRPC

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

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

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

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

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

次の手順では、Dataproc クラスタを作成し、Dataproc Metastore サービスから接続する方法について説明します。以下の手順は、すでに Dataproc Metastore サービスを作成していることを前提としています。

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

Console

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

    [クラスタの作成] を開く

  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: 新しい Dataproc クラスタの名前。
  • PROJECT_ID: Dataproc Metastore サービスを作成したプロジェクトのプロジェクト ID。
  • LOCATION: Dataproc Metastore サービスを作成したのと同じリージョン。
  • SERVICE: クラスタに接続する Dataproc Metastore サービスの名前。
  • SCOPES: (省略可)Dataproc Metastore サービスが gRPC エンドポイント プロトコルを使用する場合は、cloud-platform を使用します。

REST

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

Dataproc クラスタ プロパティを使用してクラスタをアタッチする

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

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

ENDPOINT_URI プロパティと WAREHOUSE_DIR プロパティを使用して Dataproc クラスタをアタッチする方法は 2 つあります。

オプション 1: Dataproc クラスタの作成時

Dataproc クラスタを作成する場合は、次の Hive 構成でプロパティ フラグを使用します。

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 ファイルを直接変更して Dataproc クラスタをアタッチすることもできます。

  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

以下を置き換えます。

次のステップ