Dataproc Metastore サービスを作成すると、次のいずれかのサービスを接続できます。
- Dataproc クラスタ。
- セルフマネージドの Apache Hive インスタンス、Apache Spark インスタンス、Presto クラスタ。
これらのサービスのいずれかを接続すると、クエリの実行中に Dataproc Metastore サービスを Hive メタストアとして使用します。
始める前に
- プロジェクトで Dataproc Metastore を有効にします。
- Dataproc Metastore サービスを作成します。
- プロジェクトに特有のネットワーキング要件を理解します。
必要なロール
Dataproc Metastore と Dataproc クラスタの作成に必要な権限を取得するには、管理者に次の IAM ロールの付与を依頼します。
-
すべての Dataproc Metastore リソースに対する完全アクセス権を付与するには、次のいずれかを行います。
-
ユーザー アカウントまたはサービス アカウントに対する Dataproc Metastore 編集者(
roles/metastore.editor
) -
ユーザー アカウントまたはサービス アカウントに対する Dataproc Metastore 管理者(
roles/metastore.admin
)
-
ユーザー アカウントまたはサービス アカウントに対する 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
Google Cloud コンソールで、Dataproc の [クラスタの作成] ページを開きます。
[クラスタ名] フィールドに、クラスタの名前を入力します。
[リージョン] および [ゾーン] メニューで、Dataproc Metastore サービスを作成したリージョンと同じリージョンを選択します。任意のゾーンを選択できます。
[クラスタのカスタマイズ] タブをクリックします。
[ネットワーク構成] セクションで、Dataproc Metastore サービスを作成したのと同じネットワークを選択します。
[Dataproc Metastore] セクションで、接続する Dataproc Metastore サービスを選択します。まだ作成していない場合は、[新しいサービスを作成] を選択できます。
省略可: Dataproc Metastore サービスが gRPC エンドポイント プロトコルを使用する場合:
- [セキュリティを管理する] タブをクリックします。
- [プロジェクト アクセス] セクションで、[このクラスタのクラウド プラットフォーム スコープを有効にします] を選択します。
必要に応じて、残りのサービス オプションを構成します。
クラスタを作成するには、[作成] をクリックします。
新しいクラスタが [クラスタ] リストに表示されます。クラスタが使用可能になるまで、クラスタのステータスは [プロビジョニング] として表示されます。使用の準備が整うと、ステータスが [実行中] に変わります。
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_URI
と WAREHOUSE_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"
以下を置き換えます。
CLUSTER_NAME
: 新しい Dataproc クラスタの名前。ENDPOINT_URI
: Dataproc Metastore サービスのエンドポイント URI。WAREHOUSE_DIR
: Hive ウェアハウス ディレクトリの場所。
方法 2: hive-site.xml
ファイルを更新する
また、クラスタの hive-site.xml
ファイルを直接変更して Dataproc クラスタをアタッチすることもできます。
- SSH を使用して
.*-m
クラスタに接続します。 /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>
以下を置き換えます。
ENDPOINT_URI
: Dataproc Metastore サービスのエンドポイント URI。WAREHOUSE_DIR
: Hive ウェアハウス ディレクトリのロケーション。
HiveServer2 を再起動します。
sudo systemctl restart hive-server2.service
セルフマネージド クラスタ
セルフマネージド クラスタは、Apache Hive インスタンス、Apache Spark インスタンス、Presto クラスタのいずれかです。
セルフマネージド クラスタを接続する
クライアント構成ファイルで次の値を設定します。
hive.metastore.uris=ENDPOINT_URI
hive.metastore.warehouse.dir=WAREHOUSE_DIR
以下を置き換えます。
ENDPOINT_URI
: Dataproc Metastore サービスのエンドポイント URI。WAREHOUSE_DIR
: Hive ウェアハウス ディレクトリの場所。