サービスへのメタデータのインポート

インポートは、いくつかのリレーショナル データベースを基盤とする外部 Hive メタストアに格納されているメタデータを Dataproc Metastore に移行します。 サポートされているインポートのソースは、Avro と MySQL のダンプファイルなどです。

このページでは、ローカル ブラウザで開かれた Google Cloud Console、Cloud SDK の gcloud コマンドライン ツール、または Dataproc Metastore API メソッドの services.metadataImports.create を使用して、既存の Dataproc Metastore サービスにメタデータをインポートする方法について説明します。

後述するように、まずデータを Cloud Storage バケットに配置する必要があります。

始める前に

  • 大部分の gcloud metastore コマンドでは、ロケーションを指定する必要があります。ロケーションは、--location フラグを使用するかデフォルトのロケーションを設定することで指定できます。

最良の結果を得るため、Dataproc Metastore サービスと同じリージョンにある Cloud Storage バケットを使用します。Dataproc Metastore はリージョン制限を適用しませんが、同じロケーションに配置されたリソースとグローバル リソースのパフォーマンスは向上します。たとえば、グローバル バケットはどのサービス リージョンでも問題ありませんが、EU のマルチリージョン バケットは us-central1 のサービスとはうまく機能しません。リージョンをまたぐアクセスでは、レイテンシが増加し、リージョンの障害分離がなくなり、リージョン間のネットワーク帯域幅に対して課金されることになります。

アクセス制御

  • メタデータをインポートするには、metastore.imports.create IAM 権限を含む IAM ロールを付与する必要があります。Dataproc Metastore 固有のロール roles/metastore.admin および roles/metastore.editor がインポート権限の付与に使用できます。

  • また、従来のロールの roles/ownerroles/editor も、ユーザーやグループへのインポート権限の付与に使用できます。

  • Dataproc Metastore サービス エージェント(service-CUSTOMER_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com)とメタデータをインポートするユーザーには、インポートに使用する Cloud Storage バケットに対する次の読み取り権限が付与されている必要があります。

    • MySQL については、インポートに使用する Cloud Storage オブジェクト(SQL ダンプファイル)に対する storage.objects.get 権限を付与されている必要があります。

    • Avro については、インポートに使用する Cloud Storage バケットに対する storage.objects.get 権限を必要されている必要があります。

  • VPC Service Controls を使用している場合、Dataproc Metastore サービスと同じサービス境界にある Cloud Storage バケットからのみデータをインポートできます。

詳細については、Dataproc Metastore IAM とアクセス制御をご覧ください。

サービスへのメタデータのインポート

ローカル ブラウザで開いたサービスの詳細ページで、インポート パラメータを入力するか、gcloud ツールを使用するか、Dataproc Metastore API メソッドのservices.metadataImports.createを使用することで、サービスにメタデータをインポートできます。

インポートが保留されている間は、サービスを更新できません。サービスは、インポート中でも使用できます。

インポートの準備

外部の Hive メタストア データベースに格納されているメタデータを Dataproc Metastore にインポートする前に、次に示すインポートの準備を行う必要があります。

  1. 外部データベースの Avro ファイルまたは MySQL ダンプファイルの形式でデータベース ダンプを作成します。

  2. ファイルを Cloud Storage に移動します。Cloud Storage のパスをメモします。インポートの実行に必要です。

    • Avro では、ファイルを Cloud Storage フォルダに移動します。テーブルが空の場合でも、Hive テーブルごとにファイルが必要です。ファイル名は <table-name>.avro の形式にする必要があります(<table-name> はすべて大文字にする必要があります)。<table-name> は SQL ダンプファイルにあります。ファイル名の例: AUX_TABLE.avro

    • MySQL の場合は、ファイルを Cloud Storage バケットに移動します。

ファイルを用意したら、Google Cloud Console、gcloud ツールまたは Dataproc Metastore API を使用して、Dataproc Metastore サービスにインポートできます。

Console

  1. Cloud Console で、Dataproc Metastore ページを開きます。

    Cloud Console で Dataproc Metastore を開く

  2. [Dataproc Metastore] ページで、メタデータをインポートするサービスの名前をクリックします。サービスの詳細ページが開きます。

    サービスの詳細ページ
  3. ページ上部にある [IMPORT] ボタンをクリックします。[Import] ダイアログが開きます。

  4. [Import name] を入力します。

  5. [ソース] を選択します。

  6. Cloud Storage URI を [BROWSE] して選択します。これは、インポート データ バケットへの Cloud Storage パスです。

  7. 省略可: インポートの [説明] を入力します。これは、後でサービスの詳細ページで編集できます。

  8. [インポート] ボタンをクリックしてサービスを更新します。

  9. サービスの詳細ページに戻り、[IMPORT / EXPORT] タブの [Import history] にインポートが表示されていることを確認します。

gcloud

  1. 次の gcloud metastore services import gcs コマンドを使用してサービスを更新します。

    gcloud metastore services import gcs SERVICE \
        --import-id=IMPORT_ID \
        --location=LOCATION \
        --description=DESCRIPTION \
        --dump-type=DUMP_TYPE \
        --database-dump=DATABASE_DUMP
    

    以下を置き換えます。

    • SERVICE: サービスの名前。
    • IMPORT_ID: このメタデータ インポートの ID。
    • LOCATION: Google Cloud リージョンを指します。
    • DESCRIPTION: 省略可: import の説明。これは gcloud metastore services imports update IMPORT を使用して後で編集できます
    • DUMP_TYPE: 外部データベースの種類。デフォルトは mysql です。
    • DATABASE_DUMP: データベース ファイルを格納する Cloud Storage バケットへのパス。先頭を gs:// にする必要があります。
  2. インポートが正常に終了したことを確認します。

REST

API Explorer を使用して API の手順に従い、サービスにメタデータをインポートします。

インポートが正常に終了すると、サービスは自動的にアクティブ状態になります。インポートが失敗した場合、サービスは以前の正常な状態にロールバックされます。

サービスのインポート履歴を表示するには、Cloud Console のサービスの詳細ページの [IMPORT / EXPORT] タブを開きます。

インポートに関する注意事項

  • インポートを実行すると、サービス全体のメタデータが更新されます。既存のメタデータが上書きされます。

  • データベース ファイルは Avro または MySQL のダンプファイルであることが必要です。PostgreSQL などの別の方法を使用する場合は、ダンプを Avro または MySQL のダンプファイルに変換する必要があります。インポートは、ネイティブ SQL を使用して Dataproc クラスタから取得した MySQL ダンプをサポートしています。

  • インポートの際、Dataproc Metastore ではデータベース コンテンツを変換してファイルを移行処理することはありません。したがって、データを別のロケーションに移すには、Dataproc Metastore でテーブルデータのロケーションとスキーマを手動で更新する必要があります。

  • API を使用すると、インポートを作成、一覧の取得、詳細の取得、更新を行えますが、削除はできません。ただし、サービス自体を削除すると、そのサービス配下のインポートはすべて削除されます。

よくある間違い

  • メタデータをインポートした場合に、Hive メタストアと Dataproc Metastore のバージョン間には互換性がありません。この 2 つのバージョンが一致しない場合は、インポートが失敗する可能性があります。詳細については、バージョン ポリシーをご覧ください。

  • Avro のインポートを準備する際には、欠落している Hive テーブル ファイルが存在します。テーブルが空であっても、Hive テーブルごとに 1 つのファイルが必要です。この要件を満たさないと、インポートが失敗します。

  • Dataproc Metastore サービス エージェント(service-CUSTOMER_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com)とメタデータをインポートするユーザーには、次の読み取り権限が付与されていません。

    • MySQL については、インポートに使用する Cloud Storage オブジェクト(SQL ダンプファイル)に対する storage.objects.get 権限が付与されていません。

    • Avro については、インポートに使用する Cloud Storage バケットに対する storage.objects.get 権限が付与されていません。

  • データベース ファイルが大きすぎるため、インポート処理を完了するには 1 時間を超える時間を要します。

次のステップ