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. Avro-basierte Importe werden für Hive-Versionen 2.3.6 und 3.1.2 unterstützt.

Auf dieser Seite wird erläutert, wie Sie Metadaten in einen vorhandenen Dataproc Metastore-Dienst importieren. Beachten Sie, dass Sie die Daten zuerst in einem Cloud Storage-Bucket ablegen müssen, wie in den folgenden Abschnitten 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 Ihr Dataproc Metastore-Dienst befinden. Obwohl Dataproc Metastore keine Regionseinschränkungen erzwingt, erzielen gemeinsame Standorte und globale Ressourcen eine bessere Leistung. Ein globaler Bucket eignet sich beispielsweise für jede Dienstregion, aber ein Bucket mit mehreren Regionen in der EU funktioniert nicht gut mit einem us-central1-Dienst. Der regionenübergreifende Zugriff führt zu einer höheren Latenz, einer fehlenden regionalen Isolierung von Gebühren und Gebühren für die regionenübergreifende Netzwerkbandbreite.

Zugriffssteuerung

  • Zum Importieren von Metadaten müssen Sie eine IAM-Rolle mit der IAM-Berechtigung metastore.imports.create anfordern. Die Dataproc Metastore-spezifischen Rollen roles/metastore.admin und roles/metastore.editor enthalten die Importberechtigung.

  • Mithilfe der Legacy-Rollen roles/owner und roles/editor können Sie Nutzern oder Gruppen eine Importberechtigung erteilen.

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

    • Für MySQL benötigen sie die storage.objects.get-Berechtigung für das für den Import verwendete Cloud Storage-Objekt (SQL-Dumpdatei).

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

  • Wenn Sie VPC Service Controls nutzen, können Sie nur Daten aus Cloud Storage-Buckets importieren, die sich im selben Dienstperimeter wie der Dataproc Metastore-Dienst befinden.

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

Metadaten in einen Dienst importieren

Geben Sie Importparameter auf der Seite „Dienstdetails“ in einem lokalen Browser ein, um Metadaten in einen Dienst zu importieren. Verwenden Sie dazu das gcloud-Tool oder geben Sie die Dataproc Metastore API-Methode services.metadataImports.create aus.

Solange der Import aussteht, können keine Aktualisierungen am Dienst vorgenommen werden. Sie können den Dienst trotzdem weiter verwenden, während er importiert wird.

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. Erstellen Sie Datenbank-Dumps Ihrer externen Datenbank als Avro-Dateien oder MySQL-Dumpdateien.

  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 das Format <table-name>.avro haben, wobei <table-name> aus Großbuchstaben bestehen muss. Sie finden das <table-name> in den SQL-Dumpdateien. Hier ist ein Beispieldateiname: AUX_TABLE.avro.

    • Bewegen Sie für MySQL die Datei in einen Cloud Storage-Bucket.

Dataproc Metastore führt eine Hive-Metadatenschema-Validierung durch, sobald Sie den Import starten. Es prüft die Tabellen in der SQL-Dumpdatei und die Dateinamen für Avro. Fehlt eine Tabelle, schlägt der Import mit einer Fehlermeldung fehl, die die fehlende Tabelle beschreibt. Sie können das Dataproc Metastore Toolkit als Referenz nutzen, um die korrekten Hive-Metadatenschemas zu prüfen.

Import durchführen

Nachdem Sie die Datei vorbereitet haben, können Sie sie 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 die Schaltfläche Importieren. Das Dialogfeld Importieren wird geöffnet.

  4. Geben Sie den Importnamen ein.

  5. Wählen Sie die Quelle.

  6. Wählen Sie den Cloud Storage-URI aus. Dies ist der Cloud Storage-Pfad zum Ordner für Avro oder zum Objekt für MySQL.

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

  8. Klicken Sie auf die Schaltfläche 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. Führen Sie folgenden gcloud metastore services import gcs-Befehl aus, um einen Dienst zu aktualisieren:

    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 des Metadatenimports.
    • LOCATION: Bezieht sich auf eine Google Cloud-Region.
    • DESCRIPTION (optional): Beschreibung des Imports Du kannst 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-Ordner für Avro oder zum Objekt für MySQL, das die Datenbankdateien enthält. Er muss mit gs:// beginnen.
  2. Prüfen Sie, ob der Import erfolgreich war.

REST

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

Wenn der Import erfolgreich ist, wechselt der Dienst automatisch in den Aktivitätsstatus. Schlägt er fehl, 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.

Vorbehalte bei Importen

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

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

  • Avro-basierte Importe werden für Hive-Versionen 2.3.6 und 3.1.2 unterstützt.

  • Dataproc Metastore transformiert den Datenbankinhalt während des Imports nicht und bietet 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, aber nicht löschen. Durch das Löschen des Dienstes selbst werden jedoch alle verschachtelten Importe unter diesem Dienst gelöscht.

Häufige Fehler

  • Wenn Sie Metadaten importieren, sind die Hive-Metastore- und die Dataproc Metastore-Versionen nicht kompatibel. Falls Ihre Daten nicht übereinstimmen, kann der Import fehlschlagen. Weitere Informationen finden Sie in den Versionsrichtlinien.

  • Bei der Vorbereitung des Imports für MySQL fehlen Hive-Tabellen oder das Schema ist falsch. Der Import schlägt fehl, wenn Tabellen fehlen oder das Schema falsch ist.

  • Bei der Vorbereitung 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.

  • Dem Dataproc Metastore-Dienst-Agent (service-CUSTOMER_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com) oder dem Nutzer, der die Metadaten importiert, fehlt folgende Leseberechtigung:

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

    • Für Avro fehlt ihnen die storage.objects.get-Berechtigung für den Cloud Storage-Bucket, der für den Import verwendet wird.

  • Ihre Datenbankdatei ist zu groß und dauert mehr als eine Stunde, um den Importvorgang abzuschließen.

Nächste Schritte