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

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

このページでは、既存の 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.adminroles/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 テーブルには、空のテーブルでも 1 つのファイルが保存されます。ファイル名は <table-name>.avro の形式にする必要があります。<table-name> はすべて大文字にする必要があります。<table-name> は SQL ダンプファイルにあります。ファイル名の例: AUX_TABLE.avro

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

インポートを開始すると、Dataproc Metastore によって Hive メタデータ スキーマ検証が実行されます。SQL ダンプファイル内のテーブルと Avro 用のファイル名を検証します。テーブルがない場合、不足しているテーブルを説明するエラー メッセージが表示され、インポートは失敗します。Dataproc Metastore Toolkit を参照して、適切な Hive メタデータ スキーマを確認できます。

これでファイルの準備が整ったため、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 ダンプがサポートされます。

  • Avro ベースのインポートは、Hive バージョン 2.3.6 と 3.1.2 でサポートされています。

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

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

よくある間違い

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

  • MySQL のインポートを準備するときに、Hive テーブルが欠落しているか、スキーマが正しくありません。不足しているテーブルがある場合やスキーマが正しくない場合、インポートは失敗します。

  • 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 時間を超える時間を要します。

次のステップ