Hive-metaarkivfederation: aktivera Unity Catalog för att styra tabeller som registrerats i ett Hive-metaarkiv
Viktig
Den här funktionen finns i offentlig förhandsversion.
Den här artikeln introducerar Hive-metaarkivfederation, en funktion som gör det möjligt för Unity Catalog att styra tabeller som lagras i ett Hive-metaarkiv. Du kan federera ett externt Hive-metaarkiv eller ett äldre internt Azure Databricks Hive-metaarkiv.
Hive metastore federation kan användas för följande användningsområden:
Som ett steg i migrationsväg till Unity Catalog, möjliggör det inkrementell migrering utan att anpassa koden, där vissa av dina arbetsbelastningar fortsätter att använda data som är registrerade i Hive-metaarkivet, medan andra migreras.
Det här användningsfallet passar bäst för organisationer som använder ett äldre internt Azure Databricks Hive-metaarkiv idag, eftersom federerade interna Hive-metaarkiv tillåter både läs- och skrivarbetsbelastningar.
För att tillhandahålla en mer långsiktig hybridmodell för organisationer som måste underhålla vissa data i ett Hive-metaarkiv tillsammans med sina data som är registrerade i Unity Catalog.
Det här användningsfallet passar bäst för organisationer som använder ett externt Hive-metaarkiv, eftersom federerade kataloger för dessa Hive-metaarkiv är skrivskyddade.
Översikt över federering av Hive-metadatalager
I Hive-metaarkivfederationen skapar du en anslutning från Din Azure Databricks-arbetsyta till Hive-metaarkivet, och Unity Catalog crawlar Hive-metaarkivet för att fylla i en federerad katalog som gör att din organisation kan arbeta med hive-metaarkivtabeller i Unity Catalog, vilket ger centraliserade åtkomstkontroller, ursprung, sökning med mera.
Federerade Hive-metaarkiv som är externa till din Azure Databricks-arbetsyta tillåter läsningar med Unity Catalog. Interna Hive-metaarkiv tillåter läsningar och skrivningar, uppdaterar Hive-metaarkivmetadata samt Unity Catalog-metadata när du skriver.
När du gör förfrågningar mot federerade Hive-metastore-tillgångar tillhandahåller Unity Catalog styrningslagret och utför funktioner som åtkomstkontroll och granskning, medan frågor körs med Hive-metastore-semantik. Om en användare till exempel frågar en tabell som lagras i Parquet-format i en federerad katalog:
- Unity Catalog kontrollerar om användaren har åtkomst till tabellen och härleder ursprung för frågan.
- Själva frågan körs mot det underliggande Hive-metaarkivet och utnyttjar den senaste metadata- och partitionsinformationen som lagras där.
Hur jämför sig Hive-metastore-federationen med användningen av externa tabeller i Unity Catalog?
Unity Catalog har möjlighet att skapa externa tabeller, ta data som redan finns på en godtycklig molnlagringsplats och registrera dem i Unity Catalog som en tabell. Det här avsnittet utforskar skillnaderna mellan externa och federerade Hive-metaarkivtabeller.
Båda tabelltyperna har följande egenskaper:
- Kan användas för att registrera en godtycklig plats i molnlagring som en tabell.
- Kan tillämpa Unity Catalog-behörigheter och detaljerad åtkomstkontroll.
- Kan visas i härstamningen för frågor som refererar till dem.
Endast federerade tabeller har följande egenskaper:
- Identifieras automatiskt baserat på crawlning av ett Hive-metaarkiv. Så snart tabeller skapas i Hive-metaarkivet visas de och är tillgängliga för frågor i den federerade katalogen i Unity Catalog.
- Tillåt att tabeller definieras med Hive-semantik som Hive SerDes och partitioner.
- Tillåt att tabeller har överlappande sökvägar med andra tabeller i federerade kataloger.
- Tillåt att tabeller lokaliseras vid DBFS-rotplatser.
- Inkludera vyer som definieras i Hive-metadatalager.
På så sätt kan du tänka dig att federerade Hive-metastore-tabeller erbjuder bakåtkompatibilitet med Hive-metastore, vilket gör det möjligt för arbetslaster att använda enbart Hive-semantik, men med styrning som tillhandahålls av Unity Catalog.
Vissa Unity Catalog-funktioner är dock inte tillgängliga i federerade tabeller, till exempel:
- Funktioner som endast är tillgängliga för hanterade Unity Catalog-tabeller, till exempel förutsägande optimering.
- Vektorsökning, Deltadelning, Lakehouse-övervakning och onlinetabeller.
- Viss funktionalitet i funktionsbutiken, inklusive skapande av funktionsbutik, skapande av modelltjänster, skapande av funktionsspecifikationer, modellloggning och batchbedömning.
Prestanda kan vara marginellt sämre än arbetsbelastningar i Unity Catalog eller Hive-metaarkiv eftersom både Hive-metaarkivet och Unity Catalog finns på frågesökvägen för en federerad tabell.
Mer information om funktioner som stöds finns i Krav, funktioner som stöds och begränsningar.
Vad innebär det att skriva till en federerad Hive-metaarkivkatalog i Azure Databricks?
Skrivningar stöds endast för federerade interna Hive-metaarkiv, inte externa Hive-metaarkiv.
Skrivningar till federerade metaarkiv är av två typer:
DDL-åtgärder, exempelvis
CREATE TABLE
,ALTER TABLE
ochDROP TABLE
.DDL-åtgärder återspeglas synkront i det underliggande Hive-metaarkivet. Om du till exempel kör en
CREATE TABLE
-instruktion skapas tabellen i både Hive-metaarkivet och den federerade katalogen.Varning
Det innebär också att
DROP
kommandon återspeglas i Hive-metaarkivet. Till exempel släpperDROP SCHEMA mySchema CASCADE
alla tabeller i det underliggande Hive-metaarkivschemat, utan alternativet attUNDROP
, eftersom Hive-metaarkivet inte stöderUNDROP
.DML-åtgärder som
INSERT
,UPDATE
ochDELETE
.DML-åtgärder återspeglas också synkront i den underliggande Hive-metaarkivtabellen. Om du till exempel kör
INSERT INTO
läggs poster till i tabellen i Hive-metaarkivet.Skrivstöd är en nyckel för att möjliggöra en sömlös övergång under migreringen från Hive-metaarkivet till Unity Catalog. Se Hur använder du Hive-metaarkivfederation under migreringen till Unity Catalog?.
Hur konfigurerar du Hive metastore-federation?
För att konfigurera Hive-metastore-federation gör du följande:
Skapa en anslutning i Unity Catalog som anger sökvägen och autentiseringsuppgifterna för åtkomst till Hive-metaarkivet.
Federationen för Hive-metaarkivet använder den här anslutningen för att genomsöka Hive-metaarkivet. För de flesta databassystem anger du ett användarnamn och lösenord. För en anslutning till ett äldre internt Hive-metaarkiv för Azure Databricks-arbetsytan tar Hive-metaarkivfederationen hand om auktoriseringen.
Skapa autentiseringsuppgifter för lagring och en extern plats i Unity Catalog för sökvägarna till tabellerna som registrerats i Hive-metastore.
Externa platser innehåller sökvägar och lagringsautentiseringsuppgifter som krävs för att få åtkomst till dessa sökvägar. Autentiseringsuppgifter för lagring är Skyddsbara objekt i Unity Catalog som anger autentiseringsuppgifter, till exempel Azure-hanterade identiteter, för åtkomst till molnlagring. Beroende på vilket arbetsflöde du väljer för att skapa externa platser kan du behöva skapa autentiseringsuppgifter för lagring innan du skapar den externa platsen.
Skapa en federerad katalog i Unity Catalog med hjälp av den anslutning som du skapade i steg 1.
Det här är den katalog som arbetsyteanvändare och arbetsflöden använder för att arbeta med Hive-metaarkivtabeller med hjälp av Unity Catalog. När du har skapat den federerade katalogen fyller Unity Catalog i den med tabellerna som är registrerade i Hive-metaarkivet.
Bevilja behörigheter till tabellerna i den federerade katalogen med hjälp av Unity Catalog.
Du kan också använda rad- och kolumnfilter för Unity Catalog för detaljerad åtkomstkontroll.
Börja göra förfrågningar på data.
Åtkomst till federerade data med Unity Catalog är skrivskyddad för externa Hive-metaarkiv och läs- och skrivåtkomst för interna Hive-metaarkiv.
För interna Hive-metaarkiv och externa Hive-metaarkiv uppdaterar Unity Catalog kontinuerligt tabellmetadata när de ändras i Hive-metaarkivet. För interna Hive-metaarkiv skrivs nya tabeller och tabelluppdateringar som har bekräftats från den federerade katalogen tillbaka till Hive-metaarkivet, vilket upprätthåller fullständig samverkan mellan Unity Catalog- och Hive-metaarkivkatalogerna.
Detaljerade instruktioner finns i:
- Aktivera federation av Hive-metastore för en äldre Hive-metastore-arbetsyta
- Aktivera Hive-metaarkivfederation för ett externt Hive-metaarkiv
Hur använder du Hive-metaarkivfederation under migreringen till Unity Catalog?
Med Hive-metaarkivfederationen kan du migrera till Unity Catalog stegvis genom att minska behovet av samordning mellan team och arbetsbelastningar. Om du migrerar från din Azure Databricks-arbetsytas interna Hive-metaarkiv innebär möjligheten att läsa från och skriva till både Hive-metaarkivet och Unity Catalog-metaarkivet att du kan underhålla "speglade" metaarkiv under migreringen, vilket ger följande fördelar:
- Arbetsbelastningar som körs mot federerade kataloger körs i Hive-metaarkivets kompatibilitetsläge, vilket minskar kostnaden för kodanpassning under migreringen.
- Varje arbetsbelastning kan välja att migrera oberoende av andra, med vetskapen om att data under migreringsperioden kommer att vara tillgängliga i både Hive-metaarkivet och Unity Catalog, vilket minskar behovet av att samordna mellan arbetsbelastningar som har beroenden på varandra.
Det här avsnittet beskriver ett typiskt arbetsflöde för migrering av en Azure Databricks-arbetsytas interna äldre Hive-metaarkiv till Unity Catalog, där Hive-metaarkivfederationen underlättar övergången. Det gäller inte för migrering av ett externt Hive-metaarkiv. Federerade kataloger för externa Hive-metaarkiv stöder inte skrivningar.
Steg 1: Federera det interna Hive-metadatalagret
I det här steget skapar du en federerad katalog som speglar hive-metaarkivet i Unity Catalog. Vi kallar det hms_in_uc
.
Not
Som en del av federationsprocessen konfigurerar du externa platser för att ge åtkomst till data i molnlagringen. I migreringsscenarier där vissa arbetsbelastningar kör frågor mot data med hjälp av äldre åtkomstmekanismer och andra arbetsbelastningar kör frågor mot samma data i Unity Catalog kan unity catalog-hanterade åtkomstkontroller på externa platser hindra äldre arbetsbelastningar från att komma åt sökvägarna till lagring från Unity Catalog-aktiverad beräkning. Du kan aktivera "återställningsläge" på dessa externa platser för att återgå till alla kluster- eller notebook-begränsade autentiseringsuppgifter som har definierats för den äldre arbetsbelastningen. När migreringen är klar inaktiverar du återställningsläget. Se Vad är reservläge?.
För mer information, se Aktivera Hive-metaarkivfederation för ett äldre arbetsytas Hive-metaarkiv.
Steg 2. Kör nya arbetsflöden mot den federerade katalogen i Unity Catalog
När du har en federerad katalog på plats kan du ge SQL-analytiker och datavetenskapskonsumenter åtkomst till den och börja utveckla nya arbetsbelastningar som pekar på den. De nya arbetsflödena drar nytta av den utökade funktionsuppsättningen i Unity Catalog, inklusive åtkomstkontroller, sökning och härkomst.
I det här steget gör du vanligtvis följande:
- Välj Unity Catalog-kompatibel beräkning (dvs. standard- eller dedikerade beräkningsåtkomstlägen, SQL-lager eller serverlös beräkning). Se Krav, funktioner som stöds och begränsningar.
- Gör den federerade katalogen till den standardkatalogen på beräkningsresursen eller lägg till
USE CATALOG hms_in_uc
överst i koden. Eftersom scheman och tabellnamn i den federerade katalogen är exakta speglar av dem i Hive-metaarkivet börjar koden referera till den federerade katalogen.
Steg 3. Migrera befintliga jobb som ska köras mot den federerade katalogen
Så här migrerar du befintliga jobb för att göra förfrågningar mot den federerade katalogen:
- Ändra standardkatalogen i jobbklustret till
hms_in_uc
, antingen genom att ange en egenskap i själva klustret eller genom att lägga tillUSE CATALOG hms_in_uc
överst i koden. - Växla jobbet till standardbaserad eller dedikerad åtkomstlägesberäkning och uppgradera till en av Databricks Runtime-versionerna som stöder Hive-metaarkivfederation. Se Krav, funktioner som stöds och begränsningar.
- Be en Azure Databricks-administratör att bevilja rätt Unity Catalog-behörigheter för dataobjekten i
hms_in_uc
och på alla molnlagringsvägar (ingår i externa Platser i Unity Catalog) som jobbet kommer åt. Se Hantera privilegier i Unity Catalog.
Steg 4. Neka åtkomst till Hive-metaarkivet
När du har migrerat alla dina arbetslaster för att använda den federerade katalogen behöver du inte längre Hive-metastore. Du kan använda äldre tabellåtkomstkontroller och beräkningsbehörigheter för att blockera direkt åtkomst från din Azure Databricks-arbetsyta till Hive-metaarkivet. Du kan till exempel:
Återkalla alla behörigheter för objekten i Hive-metaarkivkatalogen.
Kommandot
MSCK REPAIR PRIVILEGES
är praktiskt för det här ändamålet. Se MSCK REPAIR PRIVILEGES och Hive-metaarkivbehörigheter och skyddsbara objekt (äldre).Förhindra att användare skapar och använder kluster som kringgår tabellåtkomstkontroll (kluster som inte använder något läge för delad åtkomst för isolering eller en äldre anpassad klustertyp) med hjälp av beräkningsprinciper.
Gör den federerade katalogen till standardkatalogen för arbetsytan.
Vanliga frågor och svar
Följande avsnitt ger mer detaljerad information om federering av Hive-metastore.
Vad är återställningsläge?
Återställningsläge är en inställning på externa platser som du kan använda för att kringgå behörighetskontroller i Unity-katalogen under migreringen till Unity Catalog. Om du anger det ser du till att arbetsbelastningar som ännu inte har migrerats inte påverkas under installationsfasen.
Unity Catalog får åtkomst till molnlagring med hjälp av externa platser, som är skyddsbara objekt som definierar en sökväg och en autentiseringsuppgift för åtkomst till ditt molnlagringskonto. Du kan utfärda behörigheter för dem, till exempel READ FILES
, för att styra vem som kan använda sökvägen. En utmaning under migreringsprocessen är att du kanske inte vill att Unity Catalog ska börja styra all åtkomst till sökvägen omedelbart, till exempel när du har befintliga, omigrerade arbetsbelastningar som refererar till sökvägen.
Med reservläge kan du försena den strikta tillämpningen av åtkomstkontrollen för Unity Catalog på externa platser. När reservläget är aktiverat kontrolleras först arbetsbelastningar som får åtkomst till en sökväg mot Unity Catalog-behörigheter, och om dessa kontroller misslyckas, återgår man till att använda kluster- eller notebook-begränsade autentiseringsuppgifter, såsom instansprofiler eller Apache Spark-konfigurationsegenskaper. På så sätt kan befintliga arbetsbelastningar fortsätta att använda sina aktuella autentiseringsuppgifter.
Återställningsläge är endast avsett för användning under migreringen. Du bör inaktivera det när alla arbetsbelastningar har migrerats och du är redo att tillämpa åtkomstkontroller för Unity Catalog.
Fråga granskningslogg för återställningsanvändning
Använd följande fråga för att kontrollera om någon åtkomst till den externa platsen har använt återställningsläge under de senaste 30 dagarna. Om det inte finns någon återställningslägesåtkomst i ditt konto rekommenderar Databricks att du inaktiverar återställningsläget.
SELECT event_time, user_identity, action_name, request_params, response, identity_metadata
FROM system.access.audit
WHERE
request_params.fallback_enabled = 'true' AND
request_params.path LIKE '%some-path%' AND
event_time >= current_date() - INTERVAL 30 DAYS
LIMIT 10
Vad är auktoriserade sökvägar?
När du skapar en federerad katalog uppmanas du att ange auktoriserade sökvägar till molnlagringen där Hive-metaarkivtabellerna lagras. Alla tabeller som du vill komma åt via Hive-metastore-federation måste täckas av dessa sökvägar. Databricks rekommenderar att dina auktoriserade sökvägar är undersökvägar som är gemensamma för ett stort antal tabeller. Om du till exempel har tabeller på abfss://container@storageaccount.dfs.core.windows.net/bucket/table1
, ./bucket/table2
och ./bucket/table3
bör du ange abfss://container@storageaccount.dfs.core.windows.net/bucket/
som en auktoriserad sökväg.
Du kan använda UCX för att identifiera de banor som finns i Hive metastore.
Auktoriserade sökvägar lägger till ett extra säkerhetslager i federerade kataloger genom att göra det möjligt för katalogägaren att tillämpa skyddsräcken på de data som användarna kan komma åt med hjälp av federation. Detta är användbart om hive-metaarkivet tillåter användare att uppdatera metadata och godtyckligt ändra tabellplatser – uppdateringar som annars skulle synkroniseras till den federerade katalogen. I det här scenariot kan användarna potentiellt omdefiniera tabeller som de redan har åtkomst till så att de pekar på nya platser som de annars inte skulle ha åtkomst till.
Kan jag federera Hive-metaarkiv med UCX?
UCX, Databricks Labs-projektet för migrering av Azure Databricks-arbetsytor till Unity Catalog, innehåller verktyg för att aktivera Hive-metaarkivfederation:
enable-hms-federation
create-federated-catalog
Se project readme-filen på GitHub. En introduktion till UCX finns i Använda UCX-verktygen för att uppgradera din arbetsyta till Unity Catalog.
Krav, funktioner som stöds och begränsningar
I följande tabell visas de tjänster och funktioner som stöds av Hive-metaarkivfederationen. I vissa fall visas även tjänster eller funktioner som inte stöds. I dessa tabeller står "HMS" för Hive-metastore.
Kategori | Understödd | Stöds inte |
---|---|---|
Metadatakataloger |
|
|
Verksamhet |
|
|
Datatillgångar i Hive-metastore |
|
|
Lagring |
|
|
Beräkningstyper |
|
Inga isoleringskluster |
Databehandlingsversioner |
|
|
Funktioner i Unity-katalogen |
|
|