Aktivieren Sie die Hive-Metastore-Föderation für einen externen Hive-Metaspeicher

In diesem Artikel wird gezeigt, wie Sie einen externen Hive-Metaspeicher verbinden, damit Ihre Organisation mit Ihren Hive-Metastore-Tabellen mithilfe des Unity-Katalogs arbeiten kann.

Eine Übersicht über den Hive-Metastore-Partnerverbund finden Sie unter Hive-Metastore-Partnerverbund: Aktivieren des Unity-Katalogs zum Steuern von Tabellen, die in einem Hive-Metastore-registriert sind.

Bevor Sie anfangen

Überprüfen Sie die Liste der Dienste und Features, die vom Hive-Metastoreverbund unterstützt werden: Anforderungen und Featureunterstützung.

Für jeden schritt unten sind spezifische Anforderungen aufgeführt.

Schritt 1: Verbinden des Unity-Katalogs mit Ihrem externen Hive-Metaspeicher

In diesem Schritt erstellen Sie eine Verbindung, ein sicherungsfähiges Unity-Katalog-Objekt, das einen Pfad und Anmeldeinformationen für den Zugriff auf ein Datenbanksystem angibt, in diesem Fall Ihren Hive-Metaspeicher.

Requirements

Sie müssen folgendes haben:

  • Ein Benutzername und ein Kennwort, das Zugriff auf das Datenbanksystem gewährt, das den Hive-Metaspeicher hosten soll.
  • Die URL zur Datenbank (Host und Port).
  • Der Datenbankname.
  • Die CREATE CONNECTION-Berechtigung im Unity Catalog-Metastore. Metastoreadministratoren verfügen standardmäßig über diese Berechtigung.

Erstellen der Verbindung

Zum Erstellen einer Verbindung können Sie den Katalog-Explorer oder den SQL-Befehl „CREATE CONNECTION“ in einem Azure Databricks-Notebook oder im Databricks SQL-Abfrage-Editor verwenden.

Note

Sie können auch die Databricks-REST-API oder die Databricks CLI verwenden, um eine Verbindung zu erstellen. Siehe POST /api/2.1/unity-catalog/connections und Unity Catalog-Befehle.

Katalog-Explorer

  1. Klicken Sie im Azure Databricks-Arbeitsbereich auf das Datensymbol.Katalog.

  2. Klicken Sie oben im Katalogbereich auf das Symbol " Hinzufügen , und wählen Sie im Menü "Verbindung erstellen " aus.

  3. Geben Sie auf der Seite "Grundlagen der Verbindung" einen benutzerfreundlichenVerbindungsnamen ein.

  4. Wählen Sie einen Verbindungstyp des Hive-Metastores und des Metastoretyps " Extern" aus.

  5. (Optional) Fügen Sie einen Kommentar hinzu.

  6. Klicke auf Weiter.

  7. Geben Sie auf der Seite "Authentifizierung " Folgendes für Ihre Hostdatenbank ein:

    • Host: Beispiel: mysql-demo.lb123.us-west-2.rds.amazonaws.com
    • Port: Beispiel: 3306
    • Benutzer: Zum Beispiel mysql_user
    • Kennwort-: Beispiel: password123
  8. Klicke auf Weiter.

  9. Wählen Oder geben Sie auf der Seite "Verbindungsdetails " Folgendes für Ihre Hostdatenbank ein:

    • Datenbanktyp: Wählen Sie MySQL, SQLSERVER oder POSTGRESQL aus.
    • Version: Unterstützte Hive-Metastoreversionen umfassen 0.13, 2.3 und 3.1.
    • Datenbank: Der Name der Datenbank, mit der Sie eine Verbindung herstellen.
    • (Optional) Verschlüsseln der Verbindung: Aktiviert die SSL/TLS-Verschlüsselung für die Verbindung. Diese Option ist standardmäßig aktiviert (true). Das Festlegen auf diese Einstellung false ist nicht sicher und kann dazu führen, dass Daten unverschlüsselt über das Netzwerk übertragen werden. Deaktivieren Sie die Verschlüsselung nur, wenn Sie eine Verbindung mit einem Server innerhalb eines vertrauenswürdigen Netzwerks herstellen.
    • (Optional) Vertrauensserverzertifikat: Diese Option gilt nur, wenn die Verschlüsselungsverbindung aktiviert ist (true). Wenn die Datenbankinstanz kein von einer Zertifizierungsstelle signiertes Serverzertifikat verwendet, wird durch Aktivieren von Serverzertifikat vertrauen die Überprüfung der Stammzertifizierungsstelle des Serverzertifikats umgangen.
  10. Klicken Sie auf Verbindung herstellen.

  11. Geben Sie auf der Seite Kataloggrundlagen einen Namen für den Fremdkatalog ein.

  12. Wählen Sie unter Autorisierte Pfade die Cloudspeicherpfade aus, auf die über den Katalog zugegriffen werden kann. Nur Tabellen, die unter diese Pfade fallen, können über den Verbundkatalog abgefragt werden. Pfade müssen von externen Speicherorten abgedeckt werden. Weitere Informationen finden Sie unter Was sind autorisierte Pfade?.

    Sie können autorisierte Pfade nach dem Erstellen des Katalogs bearbeiten. Siehe Was sind autorisierte Pfade?.

  13. Wählen Sie auf der Seite Access die Arbeitsbereiche aus, in denen Benutzer auf den von Ihnen erstellten Katalog zugreifen können. Sie können Alle Arbeitsbereiche haben Zugriff oder Arbeitsbereichen zuweisen, anschließend die Arbeitsbereiche und dann Zuweisen auswählen.

  14. Fügen Sie einen Besitzer hinzu, der in der Lage sein wird, den Zugriff auf alle Objekte im Katalog zu verwalten. Beginnen Sie mit der Eingabe eines Benutzers oder einer Gruppe im Textfeld, und klicken Sie dann in den zurückgegebenen Ergebnissen auf den Benutzer oder die Gruppe.

  15. Gewähren Sie Berechtigungen für den Katalog.

    1. Klicken Sie auf Gewähren.
    2. Geben Sie die Prinzipale an, die Zugriff auf Objekte im Katalog haben sollen. Beginnen Sie mit der Eingabe eines Benutzers oder einer Gruppe im Textfeld, und klicken Sie dann in den zurückgegebenen Ergebnissen auf den Benutzer oder die Gruppe.
    3. Wählen Sie die voreingestellten Berechtigungen aus, die jedem Benutzer oder jeder Gruppe gewährt werden sollen. Standardmäßig werden allen Kontobenutzern BROWSE gewährt.
      • Wählen Sie Data Reader aus dem Dropdown-Menü aus, um read Berechtigungen für Objekte im Katalog zu gewähren.
      • Wählen Sie Daten-Editor aus dem Dropdownmenü aus, um read und modify Berechtigungen für Objekte im Katalog zu gewähren.
      • Wählen Sie manuell die Berechtigungen aus, die Sie vergeben möchten.
    4. Klicken Sie auf Gewähren.
  16. Klicke auf Weiter.

  17. Geben Sie auf der Seite "Metadaten" optional Tags als Schlüsselwertpaare an. Weitere Informationen finden Sie unter Anwenden von Tags auf sicherbare Unity-Katalog-Objekte.

  18. (Optional) Fügen Sie einen Kommentar hinzu.

  19. Klicken Sie auf "Speichern".

SQL

Führen Sie den folgenden Befehl in einem Notebook oder im SQL-Abfrage-Editor aus.

CREATE CONNECTION <connection-name> TYPE hive_metastore
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>',
  database '<database-name>',
  db_type 'MYSQL',
  version '2.3'
);

Es wird empfohlen, Azure Databricks-Geheimnisse anstelle von Klartext-Zeichenfolgen für vertrauliche Werte wie Anmeldeinformationen zu verwenden. Beispiel:

CREATE CONNECTION <connection-name> TYPE hive_metastore
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>'),
  database '<database-name>',
  db_type 'MYSQL',
  version '2.3'
);

Wenn Sie Nur-Text-Zeichenfolgen in SQL-Notebookbefehlen verwenden müssen, vermeiden Sie das Abschneiden der Zeichenfolge, indem Sie Sonderzeichen wie $ durch \ ersetzen. Beispiel: \$.

Informationen zum Einrichten von Geheimnissen finden Sie unter Verwaltung von Geheimnissen.

Schritt 2: Erstellen externer Speicherorte für Daten in Ihrem Hive-Metaspeicher

In diesem Schritt konfigurieren Sie einen externen Speicherort im Unity-Katalog, um den Zugriff auf die Cloudspeicherorte zu steuern, die die in Ihrem externen Hive-Metaspeicher registrierten Daten enthalten.

Externe Speicherorte sind Unity Catalog-Sicherheitsobjekte, die Anmeldeinformationen für die Speicherung mit Pfaden zu Cloud Storage Containern verknüpfen.

Optionen zum Erstellen des externen Speicherorts

Der Prozess, den Databricks für die Erstellung eines externen Speicherorts im Unity-Katalog empfiehlt, hängt von Ihrer Situation ab:

Fallbackmodus für externe Speicherorte aktivieren

Sobald Sie einen externen Speicherort im Unity-Katalog erstellen, wird der Zugriff auf den pfad, der durch diesen externen Speicherort dargestellt wird, durch Unity-Katalogberechtigungen erzwungen, wenn Sie Abfragen auf Unity-Katalogfähigen Compute ausführen. Dies kann vorhandene Workloads unterbrechen, die nicht über die richtigen Unity-Katalogberechtigungen für den Zugriff auf den Pfad verfügen.

Wenn sich ein externer Speicherort im Fallbackmodus befindet, überprüft das System zunächst die Unity-Katalogberechtigungen des Abfrage-Principals für den Speicherort, und falls dies nicht erfolgreich ist, greift auf bereits vorhandene cluster- oder notizbuchbezogene Anmeldeinformationen zurück, z. B. Instanzenprofile oder Apache Spark-Konfigurationseigenschaften, damit Ihre bestehenden Workloads weiterhin unterbrechungsfrei ausgeführt werden.

Der Fallbackmodus ist praktisch, wenn Sie dabei sind, Ihre älteren Workloads zu migrieren. Nachdem Sie Ihre Workloads so aktualisiert haben, dass sie erfolgreich mit Unity-Katalogberechtigungen ausgeführt werden, sollten Sie den Fallbackmodus deaktivieren, um zu verhindern, dass ältere clusterbezogene Anmeldeinformationen verwendet werden, um die Unity Catalog-Datengovernance zu umgehen.

Sie können den Fallbackmodus mithilfe des Katalog-Explorers oder der REST-API für externe Speicherorte des Unity Catalog aktivieren.

Berechtigungen erforderlich: Besitzer des externen Speicherorts.

Katalog-Explorer

  1. Klicken Sie im Azure Databricks-Arbeitsbereich auf das Datensymbol.Katalog.
  2. Klicken Sie auf der Seite Schnellzugriff auf Externe Daten >.
  3. Wählen Sie den externen Speicherort aus, den Sie aktualisieren möchten.
  4. Aktivieren Sie den Umschalter für den Fallbackmodus, und klicken Sie auf Aktivieren, um dies zu bestätigen.

API

In den folgenden curl-Beispielen wird gezeigt, wie Sie den Fallbackmodus aktivieren, wenn Sie einen externen Speicherort erstellen und einen vorhandenen externen Speicherort aktualisieren.

Erstellen eines neuen externen Speicherorts:

curl -X POST -H 'Authorization: Bearer <token>' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations \
--data
'{
  "name": "fallback_mode_enabled_external_location",
  "url": "abfss://container-name@storage-account.dfs.core.windows.net/external_location_container/url",
  "credential_name": "external_location_credential",
  "fallback": true
  "skip_validation": true
}'

Aktualisieren eines externen Speicherorts:

curl -X PATCH \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations/<external-location-name> \
--data
 '{
   "comment": "fallback mode enabled",
   "fallback": true
  }'

Schritt 3: Erstellen eines fremden Katalogs

Note

Möglicherweise haben Sie diesen Schritt bereits abgeschlossen, wenn Sie den Verbindungserstellungs-Assistenten im Katalog-Explorer verwendet haben, um Schritt 1 abzuschließen. Wenn Sie den fremden Katalog nicht erstellt haben, wenn Sie Schritt 1 abgeschlossen haben, oder wenn Sie SQL zum Erstellen der Verbindung verwendet haben, müssen Sie die Anweisungen in diesem Abschnitt befolgen.

In diesem Schritt verwenden Sie die Verbindung, die Sie in Schritt 1 erstellt haben, um einen fremden Katalog im Unity-Katalog zu erstellen, der auf den externen Speicherort verweist, den Sie in Schritt 2 erstellt haben. Ein fremder Katalog ist ein sicherungsfähiges Objekt im Unity-Katalog, das eine Datenbank oder einen Katalog in einem externen Datensystem spiegelt, sodass Sie Abfragen zu diesen Daten in Ihrem Azure Databricks-Arbeitsbereich ausführen können, wobei der Zugriff von Unity Catalog verwaltet wird. In diesem Fall ist der gespiegelte Katalog Ihre Daten, die in einem Hive-Metaspeicher registriert sind.

Jedes Mal, wenn ein Benutzer oder Workflow mit dem fremden Katalog interagiert, werden Metadaten aus dem Hive-Metaspeicher synchronisiert.

Anforderungen

Berechtigungsanforderungen:

So erstellen Sie den Fremdkatalog:

  • Die CREATE CATALOG-Berechtigungen für Ihren Unity Catalog-Metastore.
  • Entweder der Besitz an der Verbindung oder das CREATE FOREIGN CATALOG-Recht auf die Verbindung.
  • Um autorisierte Pfade für den fremden Katalog einzugeben, müssen Sie über die CREATE FOREIGN SECURABLE Berechtigungen für einen externen Speicherort verfügen, der diese Pfade abdeckt. Der Besitzer des externen Speicherorts verfügt standardmäßig über dieses Privileg.

So arbeiten Sie mit dem fremden Katalog:

  • Besitz des Katalogs oder USE CATALOG

Computeanforderungen:

  • So erstellen Sie den Katalog mithilfe des Katalog-Explorers: keine Berechnung erforderlich.
  • So erstellen Sie den Katalog mit SQL: Databricks Runtime 13.3 LTS oder höher.
  • Verwenden des Katalogs: ein Computer im Standardzugriffsmodus mit Databricks Runtime 13.3 LTS, 14.3 LTS, 15.1 oder höher.

Fremdkatalog erstellen

Zum Erstellen eines fremden Katalogs können Sie den Katalog-Explorer oder den SQL-Befehl CREATE FOREIGN CATALOG in einem Azure Databricks-Notizbuch oder dem SQL-Abfrage-Editor verwenden.

Weitere Informationen finden Sie außerdem unter Verwalten und Arbeiten mit Fremdkatalogen.

Note

Sie können auch die Unity-Katalog-API verwenden. Siehe Erstellen eines Katalogs in der Databricks-REST-API-Referenz.

Katalog-Explorer

  1. Klicken Sie im Azure Databricks-Arbeitsbereich auf das Datensymbol.Katalog zum Öffnen des Katalog-Explorers.

  2. Auf der Schnellzugriffsseite klicken Sie auf die Schaltfläche Daten hinzufügen und wählen Sie Katalog hinzufügen .

  3. Geben Sie einen Katalognamen ein, und wählen Sie Fremd als Typ aus.

  4. Wählen Sie die Verbindung aus, die Sie in Schritt 1 im Dropdown-Menü erstellt haben.

  5. Geben Sie im Feld Autorisierte Pfade Pfade zu den Cloudspeicherorten ein, die Sie in Schritt 2 als externe Speicherorte definiert haben. Beispiel: abfss://container@storageaccount.dfs.core.windows.net/demo, abfss://container@storageaccount.dfs.core.windows.net/depts/finance.

    Autorisierte Pfade sind eine hinzugefügte Sicherheitsebene für fremde Kataloge, die von der Hive-Metastore-Föderation unterstützt werden. Siehe Was sind autorisierte Pfade?.

  6. Geben Sie im Feld " Speicherort " einen Speicherort im Cloudspeicher an, an dem Katalogmetadaten gespeichert werden. Dies ist erforderlich, um Eisberg-Tabellen zu lesen. Beispiel: abfss://container@storageaccount.dfs.core.windows.net/catalog-metadata.

  7. Klicken Sie auf "Erstellen".

  8. (Optional:) Wählen Sie Konfigurieren aus, um einen Assistenten zu öffnen, der Sie durch das Zuweisen von Berechtigungen für den Katalog und das Hinzufügen von Tags führt. Sie können diese Schritte auch später ausführen.

    Siehe Verwalten von Berechtigungen im Unity-Katalog und Anwenden von Tags auf Unity-Katalog sicherbare Objekte.

  9. (Optional) Binden Sie den Katalog an bestimmte Arbeitsbereiche.

    Standardmäßig können Kataloge von jedem Arbeitsbereich aus aufgerufen werden, der dem Unity-Katalogmetastore zugeordnet ist (durch Benutzerrechte eingeschränkt). Wenn Sie den Zugriff nur aus bestimmten Arbeitsbereichen zulassen möchten, wechseln Sie zur Registerkarte Arbeitsbereiche, und weisen Sie Arbeitsbereiche zu. Siehe Arbeitsbereich-Katalogbindung.

  10. Füllen Sie den Fremdkatalog mit den Metadaten des Hive-Metaspeichers auf.

    Jedes Mal, wenn ein Benutzer oder Workflow mit dem fremden Katalog interagiert, werden Metadaten aus dem Hive-Metaspeicher synchronisiert. Die erste Interaktion füllt den Katalog im Unity-Katalog auf und macht den Inhalt in der Benutzeroberfläche des Katalog-Explorers sichtbar. Sie können den Katalog auffüllen, indem Sie eine unterstützte Computeressource im Katalog-Explorer auswählen und starten. Sie müssen der Katalogbesitzer (den Sie aufgrund des Erstellens des Katalogs sind) oder ein Benutzer mit den USE CATALOG Berechtigungen sein.

SQL

Führen Sie den folgenden SQL-Befehl in einem Notizbuch oder dem SQL-Abfrage-Editor aus. Elemente in Klammern sind optional. Ersetzen Sie folgende Platzhalterwerte:

  • <catalog-name>: Name für den Katalog in Azure Databricks.
  • <connection-name>: Der Name des Verbindungsobjekts, das Sie in Schritt 1 erstellt haben.
  • <path1>,<path2>: Pfade zu den Cloudspeicherorten, die Sie in Schritt 2 als externe Speicherorte definiert haben. Beispiel: abfss://container@storageaccount.dfs.core.windows.net/demo, abfss://container@storageaccount.dfs.core.windows.net/depts/finance. Autorisierte Pfade sind eine hinzugefügte Sicherheitsebene für fremde Kataloge, die von der Hive-Metastore-Föderation unterstützt werden. Siehe Was sind autorisierte Pfade?. Wenn Sie beim Erstellen des Katalogs keine autorisierten Pfade hinzufügen, können Sie mithilfe von ALTER CATALOG diese später hinzufügen. Siehe ALTER CATALOG.
  • <storage-location>: Ein Speicherort im Cloudspeicher, an dem Katalogmetadaten gespeichert werden. Dies ist erforderlich, um Eisberg-Tabellen zu lesen. Beispiel: abfss://container@storageaccount.dfs.core.windows.net/catalog-metadata.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (
  authorized_paths '<path1>,<path2>',
  storage_root '<storage-location>'
);

Jedes Mal, wenn ein Benutzer oder Workflow mit dem Verbundkatalog interagiert, werden Metadaten aus dem Hive-Metaspeicher synchronisiert.

Troubleshooting

Lesevorgänge von Iceberg-Tabellen schlagen fehl

Wenn Lesevorgänge von Iceberg-Tabellen fehlschlagen, während Lesevorgänge anderer Tabellen im selben externen Katalog erfolgreich sind, überprüfen Sie, ob der externe Katalog über ein storage_root verfügt. Die Einstellung storage_root beim Erstellen eines Katalogs ist optional, aber für das Lesen von Iceberg-Tabellen verpflichtend. Das Erben einer Speicherwurzel vom Metastore reicht nicht aus; Du musst den Standort direkt im Katalog angeben.

Beispielfehler:

Failed to instantiate org.apache.hadoop.mapred.FileInputFormat

Auflösung: Setzen Sie einen Speicherort im Katalog ein und aktualisieren Sie ihn dann. Du kannst es im Catalog Explorer festlegen (Catalog> den Katalog >Bearbeiten) oder per SQL. Für Iceberg-Support-Anforderungen siehe Anforderungen und Feature-Support.

ALTER CATALOG <catalog-name> SET MANAGED LOCATION '<storage-location>';

REFRESH FOREIGN CATALOG <catalog-name>;