Metadaten in einen Dienst importieren

Durch einen Import werden Metadaten, die in einem externen Hive-Metastore gespeichert sind und von einer relationalen Datenbank unterstützt werden, zu Dataproc Metastore migriert. Unterstützte Importquellen sind Avro- und MySQL-Dumpdateien.

Auf dieser Seite wird erläutert, wie Sie Metadaten mit der Google Cloud Console, die in einem lokalen Browser geöffnet wurde, über das gcloud-Befehlszeilentool des Cloud SDK oder über die Dataproc Metastore API-Methode services.metadataImports.create in einen vorhandenen Dataproc Metastore-Dienst importieren.

Die Daten müssen zuerst in einem Cloud Storage-Bucket gespeichert werden, wie unten beschrieben.

Hinweis

  • Für die meisten gcloud metastore-Befehle ist ein Speicherort erforderlich. Sie können den Speicherort mit dem Flag --location oder durch Festlegen des Standardspeicherorts angeben.

Die besten Ergebnisse erzielen Sie, wenn Sie Cloud Storage-Buckets verwenden, die sich in derselben Region wie der Dataproc Metastore-Dienst befinden. Obwohl Dataproc Metastore keine Regionsbeschränkungen erzwingt, sind zusammengelegte Ressourcen und globale Ressourcen eine bessere Leistung. Beispiel: Ein globaler Bucket eignet sich für jede Dienstregion, aber ein multiregionalen Bucket in der EU funktioniert nicht mit einem us-central1-Dienst. Der regionsübergreifende Zugriff führt zu einer höheren Latenz, einer regionalen Ausfallisolation und Gebühren für regionenübergreifende Netzwerkbandbreite.

Zugriffssteuerung

  • Zum Importieren von Metadaten benötigen Sie eine IAM-Rolle mit der IAM-Berechtigung metastore.imports.create. Die Dataproc-Metastore-spezifischen Rollen roles/metastore.admin und roles/metastore.editor können zum Erteilen von Importberechtigungen verwendet werden.

  • Sie können Nutzern oder Gruppen auch Importberechtigungen mit den Legacy-Rollen roles/owner und roles/editor gewähren.

  • Der Dataproc Metastore-Dienst-Agent (service-CUSTOMER_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com) und der Nutzer, der die Metadaten importiert, müssen die folgende Leseberechtigung für den für den Import verwendeten Cloud Storage-Bucket haben.

    • Für MySQL müssen sie die Berechtigung storage.objects.get für das Cloud Storage-Objekt (SQL-Dumpdatei) haben, das für den Import verwendet wird.

    • Für Avro benötigen sie die Berechtigung storage.objects.get für den Cloud Storage-Bucket, der für den Import verwendet wird.

  • Wenn Sie VPC Service Controls verwenden, können Sie nur Daten aus einem Cloud Storage-Bucket importieren, der sich im selben Dienstperimeter wie der Dataproc Metastore-Dienst befindet.

Weitere Informationen finden Sie unter Dataproc Metastore-IAM und -Zugriffssteuerung.

Metadaten in einen Dienst importieren

Sie können Metadaten in einen Dienst importieren. Geben Sie dazu Importparameter auf der Seite „Dienstdetails“ in einem lokalen Browser mithilfe des gcloud-Tools ein oder geben Sie die Dataproc Metastore API-Methode services.metadataImports.create aus.

Solange ein Import aussteht, können keine Aktualisierungen am Dienst vorgenommen werden. Sie können den Dienst während eines Imports weiterhin verwenden.

Import vorbereiten

Bevor Sie Metadaten aus einer externen Hive-Metastore-Datenbank in Dataproc Metastore importieren können, müssen Sie den Import zuerst vorbereiten:

  1. Datenbank-Dumps im Format Avro-Dateien oder MySQL-Dumpdateien Ihrer externen Datenbank erstellen

  2. Verschieben Sie die Dateien in Cloud Storage. Notieren Sie sich den Cloud Storage-Pfad. Sie benötigen sie für den Import.

    • Verschieben Sie die Dateien für Avro in einen Cloud Storage-Ordner. Für jede Hive-Tabelle sollte eine Datei vorhanden sein, auch wenn die Tabelle leer ist. Die Dateinamen müssen dem Format <table-name>.avro entsprechen, wobei <table-name> alle Großbuchstaben sein muss. Sie finden die <table-name> in den SQL-Dumpdateien. Hier ist ein Beispiel für den Dateinamen AUX_TABLE.avro.

    • Für MySQL verschieben Sie die Datei in einen Cloud Storage-Bucket.

Nachdem Sie die Datei vorbereitet haben, können Sie sie mithilfe der Google Cloud Console, des gcloud-Tools oder der Dataproc Metastore API in einen Dataproc Metastore-Dienst importieren.

Console

  1. Öffnen Sie in der Cloud Console die Dataproc Metastore-Seite:

    Dataproc Metastore in der Cloud Console öffnen

  2. Klicken Sie auf der Seite Dataproc Metastore auf den Namen des Dienstes, in den Sie Metadaten importieren möchten. Die Seite Servicedetails wird geöffnet.

    Seite „Dienstdetails“
  3. Klicken Sie oben auf der Seite auf Importieren. Das Dialogfeld Importieren wird geöffnet.

  4. Geben Sie den Importnamen ein.

  5. Wählen Sie die Quelle aus.

  6. Suchen Sie den Cloud Storage-URI und wählen Sie ihn aus. Dies ist der Cloud Storage-Pfad zum Import-Daten-Bucket.

  7. Optional: Geben Sie eine Beschreibung des Imports ein. Sie können diese später auf der Seite Dienstdetails bearbeiten.

  8. Klicken Sie auf Importieren, um den Dienst zu aktualisieren.

  9. Vergewissern Sie sich, dass Sie auf die Seite Dienstdetails zurückgekehrt sind und der Import im Bereich Importverlauf unter Import/Export aufgeführt ist.

gcloud

  1. Verwenden Sie zum Aktualisieren eines Dienstes den folgenden gcloud metastore services import gcs-Befehl:

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

    Dabei gilt:

    • SERVICE: Der Name des Dienstes.
    • IMPORT_ID: Die ID dieses Metadatenimports.
    • LOCATION: Bezieht sich auf eine Google Cloud-Region.
    • DESCRIPTION: Optional: Die Importbeschreibung Sie können dies später mit gcloud metastore services imports update IMPORT bearbeiten.
    • DUMP_TYPE: Der Typ der externen Datenbank. Die Standardeinstellung ist mysql.
    • DATABASE_DUMP: Der Pfad zum Cloud Storage-Bucket, der die Datenbankdateien enthält. Sie muss mit gs:// beginnen.
  2. Überprüfen Sie, ob der Import erfolgreich war.

REST

Folgen Sie der API-Anleitung zum Importieren von Metadaten in einen Dienst mit dem APIs Explorer.

Wenn der Import erfolgreich ist, wechselt der Dienst automatisch in den Aktivitätsstatus. Wenn er fehlschlägt, wird der Dienst auf seinen vorherigen fehlerfreien Zustand zurückgesetzt.

Den Importverlauf eines Dienstes finden Sie in der Cloud Console auf der Seite Dienstdetails im Tab Import/Export.

Einschränkungen importieren

  • Beim Importieren der Metadaten des gesamten Dienstes werden die Metadaten aktualisiert. Alle vorhandenen Metadaten werden überschrieben.

  • Die Datenbankdateien müssen entweder Avro- oder MySQL-Dumpdateien sein. Wenn Sie eine andere Methode wie PostgreSQL verwenden, müssen Sie den Dump in Avro- oder MySQL-Dumpdateien konvertieren. Der Import unterstützt MySQL-Dumps, die aus einem Dataproc-Cluster stammen, unter Verwendung von nativem SQL.

  • Dataproc Metastore transformiert den Datenbankinhalt während des Imports nicht und verarbeitet demzufolge auch keine Dateimigration. Wenn Sie die Daten an einen anderen Speicherort verschieben, müssen Sie die Speicherorte und das Schema die Tabellendaten in Dataproc Metastore manuell aktualisieren.

  • Mit der API können Sie Importe erstellen, auflisten, beschreiben und aktualisieren. Sie können sie jedoch nicht löschen. Wenn Sie den Dienst selbst löschen, werden jedoch alle verschachtelten Importe in diesem Dienst gelöscht.

Häufige Fehler

  • Beim Importieren von Metadaten sind die Hive-Metastore- und Dataproc Metastore-Versionen nicht kompatibel. Der Import schlägt fehl, wenn die beiden nicht übereinstimmen. Weitere Informationen finden Sie unter Versionsrichtlinien.

  • Beim Vorbereiten des Imports für Avro fehlen Hive-Tabellendateien. Für jede Hive-Tabelle sollte eine Datei vorhanden sein, auch wenn die Tabelle leer ist. Andernfalls schlägt der Import fehl.

  • Der Dataproc Metastore-Dienst-Agent (service-CUSTOMER_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com) und der Nutzer, der die Metadaten importiert, hat nicht die folgende Leseberechtigung:

    • MySQL: Sie haben keine storage.objects.get-Berechtigung für das Cloud Storage-Objekt (SQL-Dumpdatei), das für den Import verwendet wird.

    • Für Avro haben sie keine storage.objects.get-Berechtigung für den Cloud Storage-Bucket, der für den Import verwendet wird.

  • Ihre Datenbankdatei ist zu groß und es kann mehrere Stunden dauern, bis der Importvorgang abgeschlossen ist.

Nächste Schritte