Dataproc Metastore ist ein vollständig verwalteter, hochverfügbarer, serverloser Apache Hive-Metastore (HMS) mit automatischer Reparatur, der in Google Cloud ausgeführt wird.
Um Ihre Metadaten vollständig zu verwalten, werden sie in Dataproc Metastore Tabellen von Apache Hive zugeordnet.
Unterstützte Apache Hive-Versionen
Dataproc Metastore unterstützt nur bestimmte Versionen von Apache Hive. Weitere Informationen finden Sie in der Hive-Versionsrichtlinie.
So verarbeitet Hive Metadaten
Da Dataproc Metastore ein Hive-Metastore ist, ist es wichtig zu verstehen, wie Ihre Metadaten damit verwaltet werden.
Standardmäßig können alle Hive-Anwendungen verwaltete interne Tabellen oder nicht verwaltete externe Tabellen haben. Das bedeutet, dass die Metadaten, die Sie in einem Dataproc Metastore-Dienst speichern, sowohl in internen als auch in externen Tabellen vorhanden sein können.
Bei der Datenänderung behandelt ein Dataproc Metastore-Dienst (Hive) interne und externe Tabellen unterschiedlich.
- Interne Tabellen Verwaltet sowohl Metadaten als auch Tabellendaten.
- Externe Tabellen Verwaltet nur Metadaten.
Wenn Sie beispielsweise eine Tabellendefinition mit der Hive-SQL-Anweisung DROP TABLE
löschen:
drop table foo
Interne Tabellen In Dataproc Metastore werden alle Metadaten gelöscht. Außerdem werden die mit der Tabelle verknüpften Dateien gelöscht.
Externe Tabellen In Dataproc Metastore werden nur die Metadaten gelöscht. Die mit der Tabelle verknüpften Daten bleiben erhalten.
Hive-Warehouse-Verzeichnis
Dataproc Metastore verwendet das Hive-Warehouse-Verzeichnis, um Ihre internen Tabellen zu verwalten. Im Hive-Warehouse-Verzeichnis werden Ihre tatsächlichen Daten gespeichert.
Wenn Sie einen Dataproc Metastore-Dienst verwenden, ist das Standard-Hive-Warehouse-Verzeichnis ein Cloud Storage-Bucket. Dataproc Metastore unterstützt nur die Verwendung von Cloud Storage-Buckets für das Warehouse-Verzeichnis. Im Vergleich dazu unterscheidet sich dies von einem On-Premise-HMS, bei dem das Hive-Lagerverzeichnis normalerweise auf ein lokales Verzeichnis verweist.
Dieser Bucket wird jedes Mal automatisch für Sie erstellt, wenn Sie einen Dataproc Metastore-Dienst erstellen. Dieser Wert kann geändert werden, indem Sie für die Eigenschaft hive.metastore.warehouse.dir
eine Hive-Metastore-Konfigurationsüberschreibung festlegen.
Cloud Storage-Buckets für Artefakte
Im Artifacts-Bucket werden Ihre Dataproc Metastore-Artefakte gespeichert, z. B. exportierte Metadaten und verwaltete interne Tabellendaten.
Wenn Sie einen Dataproc Metastore-Dienst erstellen, wird in Ihrem Projekt automatisch ein Cloud Storage-Bucket erstellt. Standardmäßig verweisen sowohl der Bucket „Artifacts“ als auch das Warehouse-Verzeichnis auf denselben Bucket. Sie können den Speicherort des Artifact-Buckets nicht ändern, aber den Speicherort des Hive-Warehouse-Verzeichnisses.
Der Bucket für Artefakte befindet sich unter folgendem Pfad:
gs://your-artifacts-bucket/hive-warehouse
.- Beispiel:
gs://gcs-your-project-name-0825d7b3-0627-4637-8fd0-cc6271d00eb4
.
Auf das Hive-Warehouse-Verzeichnis zugreifen
Nachdem der Bucket automatisch für Sie erstellt wurde, prüfen Sie, ob Ihre Dataproc-Dienstkonten berechtigt sind, auf das Hive-Warehouse-Verzeichnis zuzugreifen.
Wenn Sie auf das Warehouse-Verzeichnis auf Objektebene zugreifen möchten (z. B. gs://mybucket/object), gewähren Sie den Dataproc-Dienstkonten Lese- und Schreibzugriff auf das Speicherobjekt des Buckets mit der Rolle
roles/storage.objectAdmin
. Diese Rolle muss auf Bucket-Ebene oder höher festgelegt werden.Wenn Sie das Warehouse-Verzeichnis über einen Ordner der obersten Ebene aufrufen möchten (z. B. gs://mybucket), gewähren Sie den Dataproc-Dienstkonten Lese- und Schreibzugriff auf das Speicherobjekt des Buckets mit der Rolle
roles/storage.storageAdmin
.
Wenn sich das Hive-Warehouse-Verzeichnis nicht im selben Projekt wie der Dataproc Metastore befindet, muss der Dataproc Metastore-Dienst-Agent Zugriff auf das Hive-Warehouse-Verzeichnis haben. Der Dienst-Agent für ein Dataproc Metastore-Projekt ist service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com
.
Gewähren Sie dem Dienst-Agent mit der Rolle roles/storage.objectAdmin
Lese- und Schreibzugriff auf den Bucket.
Hive-Warehouse-Verzeichnis finden
- Öffnen Sie die Seite Dataproc Metastore.
Klicken Sie auf den Namen Ihres Dienstes.
Die Seite mit den Servicedetails wird geöffnet.
Suchen Sie in der Konfigurationstabelle nach Metastore-Konfigurationsüberschreibungen > hive.metastore.warehouse.dir.
Suchen Sie den Wert, der mit
gs://
beginnt.Dieser Wert ist der Speicherort Ihres Hive-Warehouse-Verzeichnisses.
Hive-Warehouse-Verzeichnis ändern
Wenn Sie Ihren eigenen Cloud Storage-Bucket mit Dataproc Metastore verwenden möchten, legen Sie eine Hive Metastore-Konfigurationsüberschreibung fest, die auf den neuen Bucket-Speicherort verweist.
Wenn Sie das Standardlagerverzeichnis ändern, beachten Sie die folgenden Empfehlungen.
Verwenden Sie nicht das Cloud Storage-Bucket-Stammverzeichnis (
gs://mybucket
) zum Speichern von Hive-Tabellen.Das VM-Dienstkonto für den Dataproc Metastore muss berechtigt sein, auf das Hive-Warehouse-Verzeichnis zuzugreifen.
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 regionsübergreifende Bucket unterstützt, bieten gemeinsam bereitgestellte Ressourcen eine bessere Leistung. Ein EU-Multi-Region-Bucket funktioniert beispielsweise nicht gut mit einem
us-central1
-Dienst. Der regionsübergreifende Zugriff führt zu einer höheren Latenz, fehlender regionaler Fehlerisolierung und Gebühren für die regionenübergreifende Netzwerkbandbreite.
So ändern Sie das Hive-Warehouse-Verzeichnis:
- Öffnen Sie die Seite Dataproc Metastore.
Klicken Sie auf den Namen Ihres Dienstes.
Die Seite mit den Servicedetails wird geöffnet.
Suchen Sie in der Konfigurationstabelle den Abschnitt Metastore-Konfigurationsüberschreibungen > hive.metastore.warehouse.dir.
Ändern Sie den Wert von
hive.metastore.warehouse.dir
in den Speicherort des neuen Buckets. Beispiel:gs://my-bucket/path/to/location
.
Bucket löschen
Wenn Sie Ihren Dataproc Metastore-Dienst löschen, wird der Cloud Storage-Artefakt-Bucket nicht automatisch gelöscht. Ihr Bucket wird nicht automatisch gelöscht, da er möglicherweise nützliche Daten nach dem Dienst enthält. Führen Sie einen Löschvorgang in Cloud Storage aus, um den Bucket zu löschen.