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 Metastore クライアントが Dataproc Metastore に保存されているメタデータにアクセスする方法を定義します。この選択は、サービスと統合して使用できる機能にも影響します。
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 クラスタを Dataproc Metastore に接続することもできます。これらのプロパティには、Dataproc Metastore の ENDPOINT_URI
と WAREHOUSE_DIR
が含まれます。
Dataproc Metastore サービスが Private Service Connect を使用している場合、または Dataproc クラスタを Dataproc Metastore サービスの補助バージョンに接続する必要がある場合は、次の手順を使用します。
ENDPOINT_URI
プロパティと WAREHOUSE_DIR
プロパティを使用して Dataproc クラスタを接続する方法は 2 つあります。
オプション 1: Dataproc クラスタの作成時
Dataproc クラスタを作成するときに、次の Hive 構成で properties フラグを使用します。
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 ウェアハウス ディレクトリのロケーション。