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 die 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. Sie müssen zuerst die Daten in einem Cloud Storage-Bucket platzieren, 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 mit Cloud Storage-Buckets, die sich in derselben Region wie der Dataproc Metastore-Dienst befinden. Obwohl Dataproc Metastore keine Regionsbeschränkungen erzwingt, erzielen synchronisierte Ressourcen jedoch eine bessere Leistung. Ein multiregionaler EU-Bucket funktioniert beispielsweise nicht gut mit einem us-central1-Dienst. Der regionsübergreifende Zugriff führt zu einer höheren Latenz, zu wenig regionaler Fehlerisolierung und zu Gebühren für die regionsübergreifende Netzwerkbandbreite.

Zugriffssteuerung

  • Für den Import 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 Berechtigung „Importieren“.

  • 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

Zum Importieren von Metadaten in einen Dienst geben Sie Importparameter auf der Dienstdetailseite ein, die in einem lokalen Browser geöffnet wird, oder verwenden die gcloud-Befehlszeile oder eine Dataproc Metastore API-Methode services.metadataImports.create.

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, um den Import durchzuführen.

    • Verschieben Sie die Dateien in 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> in Großbuchstaben geschrieben werden muss. Sie finden das <table-name> in den SQL-Dump-Dateien. Hier ist ein Beispiel für den Dateinamen: 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 die Dataproc Metastore-Seite in der Google Cloud Console:

    Dataproc Metastore in der Google 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 Dienstdetails 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.

  6. Suchen Sie den Cloud Storage-URI und wählen Sie ihn aus. Dies ist der Cloud Storage-Pfad zum Ordner für Avro oder das 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 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
    

    Ersetzen Sie Folgendes:

    • 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 bei gcloud metastore services imports update IMPORT ändern
    • DUMP_TYPE: Der Typ der externen Datenbank. Die Standardeinstellung ist mysql.
    • DATABASE_DUMP: Der Pfad zum Cloud Storage-Ordner für Avro oder ein Objekt für MySQL mit den Datenbankdateien. 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 sie fehl, wird der Dienst auf seinen vorherigen, fehlerfreien Zustand zurückgesetzt.

Informationen zum Import eines Dienstes finden Sie in der Google Cloud Console auf der Seite Dienstdetails unter Import/Export.

Einschränkungen importieren

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

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

  • Avro-basierte Importe werden für die 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.

  • Beim Importieren werden detaillierte IAM-Richtlinien nicht wiederhergestellt oder ersetzt.

  • Mithilfe der API können Sie Importe erstellen, auflisten, beschreiben und aktualisieren, aber sie können nicht gelöscht werden. Beim Löschen des Dienstes werden auch alle verschachtelten Importe unter diesem Dienst gelöscht.

Häufige Fehler

  • Beim Import 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 MySQL fehlen Hive-Tabellen oder das Schema ist falsch. Der Import schlägt fehl, wenn Tabellen fehlen oder das Schema falsch ist.

  • Beim Vorbereiten des Imports für Avro fehlen Hive-Tabellendateien. Für jede Hive-Tabelle sollte eine Datei vorhanden sein, selbst 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 länger als eine Stunde.

Weitere Informationen