Gestyret tabeller er Hive-ejede tabeller, hvor hele livscyklussen for tabellernes data styres og kontrolleres af Hive. Eksterne tabeller er tabeller, hvor Hive har en løs kobling med dataene. Replication Manager replikerer eksterne tabeller med succes til en målklynge. De administrerede tabeller konverteres til eksterne tabeller efter replikation.
Hive understøtter replikation af eksterne tabeller med data til målklyngen, og den bevarer alle egenskaberne for eksterne tabeller. Datafilenes tilladelse og ejerskab bevares, så de relevante eksterne processer kan fortsætte med at skrive i den, selv efter failover.
Skrivningerne på eksterne tabeller udføres ved hjælp af Hive SQL-kommandoerne, og datafilerne kan også tilgås og administreres af processer uden for Hive. Hvis en ekstern tabel eller partition slettes, slettes kun de metadata, der er knyttet til tabellen eller partitionen, men de underliggende datafiler forbliver intakte. Et typisk eksempel på en ekstern tabel er at køre analytiske forespørgsler på HBase- eller Druid-ejede data ved hjælp af Hive, hvor datafilerne skrives af HBase eller Druid, og Hive læser dem til analyseformål.
Når du opretter en tidsplan for en Hive-replikeringspolitik, skal du indstille frekvensen, så ændringer replikeres ofte nok til at undgå alt for store kopier.
Du kan støde på følgende brugssituationer under Hive-replikering:
Brugssituation for opgradering af Replication Manager I et normalt scenarie, hvis du havde eksterne tabeller, der blev replikeret som administrerede tabeller, skal du efter opgraderingsprocessen droppe disse tabeller fra målet og indstille basiskataloget. I den næste instans bliver de replikeret som eksterne tabeller. Konflikter i eksterne tabellers dataplacering for replikering af flere kildeklynger til den samme målklynge For at håndtere konflikter i eksterne tabellers dataplacering for replikering af flere kildeklynger til den samme målklynge tildeler Replication Manager en unik basismappe for hver kildeklynge, under hvilken de eksterne tabellers data fra den tilsvarende kildeklynge kopieres. Hvis f.eks. placeringen af de eksterne tabeller i en kildeklynge er /ext/hbase_data, er placeringen i målklyngen efter replikation <base_dir>/ext/hbase_data. Du kan bruge kommandoen DESCRIBE TABLE til at spore den nye placering af eksterne tabeller. Replikationskonflikter mellem HDFS- og Hive-placering af eksterne tabeller Når du kører Hive-replikationspolitikken på en ekstern tabel, gemmes dataene på målmappen på en bestemt placering. Når du dernæst kører HDFS-replikeringspolitikken, som forsøger at kopiere data på den samme eksterne tabelplacering, sikrer Replication Manager, at Hive-dataene ikke tilsidesættes af HDFS. Når du f.eks. kører en Hive-replikeringspolitik på et eksternt bord, opretter politikken en målmappe /tmp/db1/ext1. Når du kører en HDFS-replikeringspolitik, skal politikken ikke tilsidesætte dataene ved at replikere på mappen /tmp/db1/ext1. Konflikter under replikeringsprocessen for eksterne tabeller Der opstår konflikter, når to Hive-replikeringspolitikker på DB1 og DB2 (enten fra samme kildeklynge eller forskellige kildeklynger) har eksterne tabeller, der peger på den samme dataplacering (f.eks. /abc), og som replikeres til den samme målklynge. For at undgå sådanne konflikter skal du angive forskellige stier for konfigurationen af den eksterne tabelbasiskatalogkonfiguration for begge politikker. Indstil f.eks. /db1 for DB1 og /db2 for DB2. Dette sikrer, at placeringen af de eksterne tabeldata i målet er forskellig for begge databaser. F.eks. /db1/abcd og /db2/abcd.