Apache Hive-replikáció használata Azure HDInsight-fürtökben
Az adatbázisok és a raktárak kontextusában a replikáció az entitások egyik raktárból a másikba történő duplikálásának folyamata. A duplikáció egy teljes adatbázisra vagy egy kisebb szintre, például egy táblára vagy partícióra is vonatkozhat. A cél egy olyan replika létrehozása, amely az alapentitás változásakor változik. Az Apache Hive replikációja a vészhelyreállításra összpontosít, és egyirányú elsődleges másolási replikációt kínál. HDInsight-fürtökben a Hive-replikáció a Hive metaadattár és a kapcsolódó mögöttes data lake egyirányú replikálására használható az Azure Data Lake Storage Gen2-ben.
A Hive-replikáció az évek során tovább fejlődött, és az újabb verziók jobb funkciókat biztosítanak, és gyorsabbak és kevésbé erőforrás-igényesek. Ebben a cikkben a HIVE-replikációt (Replv2) tárgyaljuk, amelyet a HDInsight 3.6 és a HDInsight 4.0 fürttípusok egyaránt támogatnak.
A replv2 előnyei
A Hive ReplicationV2 (más néven Replv2) az alábbi előnyökkel rendelkezik a Hive-replikáció első verziójával szemben, amely hive IMPORT-EXPORT-t használt:
- Eseményalapú növekményes replikáció
- Időponthoz kötött replikáció
- Csökkentett sávszélesség-követelmények
- A köztes példányok számának csökkentése
- A replikáció állapota megmarad
- Korlátozott replikáció
- Küllős és küllős modell támogatása
- ACID-táblák támogatása (a HDInsight 4.0-s verzióban)
Replikációs fázisok
A Hive eseményalapú replikációja az elsődleges és a másodlagos fürtök között van konfigurálva. Ez a replikáció két különböző fázisból áll: a rendszerindításból és a növekményes futtatásokból.
Rendszerindítás
A rendszerindítás célja, hogy egyszer fusson az adatbázisok alapállapotának replikálásához az elsődlegesről a másodlagosra. Szükség esetén konfigurálhatja a rendszerindítást úgy, hogy a táblák egy részét belefoglalja a céladatbázisba, ahol engedélyezni kell a replikációt.
Növekményes futtatások
A rendszerindítás után a növekményes futtatások automatizáltak lesznek az elsődleges fürtön, és a növekményes futtatások során létrehozott események vissza lesznek játszva a másodlagos fürtön. Amikor a másodlagos fürt utoléri az elsődleges fürtöt, a másodlagos összhangban lesz az elsődleges eseményekkel.
Replikációs parancsok
A Hive REPL-parancsokat – DUMP
LOAD
és STATUS
– kínál az események folyamatának vezényléséhez. A DUMP
parancs létrehoz egy helyi naplót az elsődleges fürt összes DDL/DML-eseményéről. A LOAD
parancs a kinyert replikációs memóriakép kimenetére naplózott metaadatok és adatok lusta másolásának és a célfürtön való végrehajtásának módszere. A STATUS
parancs a célfürtről fut, és megadja a legutóbbi replikációs terhelés sikeres replikálása legújabb eseményazonosítóját.
Replikációs forrás beállítása
A replikáció megkezdése előtt győződjön meg arról, hogy a replikálni kívánt adatbázis replikációs forrásként van beállítva. A parancs segítségével DESC DATABASE EXTENDED <db_name>
megállapíthatja, hogy a paraméter repl.source.for
a szabályzat nevével van-e beállítva.
Ha a szabályzat ütemezve van, és a repl.source.for
paraméter nincs beállítva, akkor ezt a paramétert először a következővel ALTER DATABASE <db_name> SET DBPROPERTIES ('repl.source.for'='<policy_name>')
kell beállítania: .
ALTER DATABASE tpcds_orc SET DBPROPERTIES ('repl.source.for'='replpolicy1')
Metaadatok memóriaképe a data lake-be
A REPL DUMP [database name]. => location / event_id
parancsot a rendszerindítási fázisban használja a releváns metaadatok az Azure Data Lake Storage Gen2-be való memóriaképéhez. Ez event_id
adja meg azt a minimális eseményt, amelyre a releváns metaadatok fel lettek helyezve az Azure Data Lake Storage Gen2-ben.
repl dump tpcds_orc;
Példa a kimenetre:
dump_dir | last_repl_id |
---|---|
/tmp/hive/repl/38896729-67d5-41b2-90dc-46eeed4c5dd0 | 2925 |
Adatok betöltése a célfürtbe
A REPL LOAD [database name] FROM [ location ] { WITH ( ‘key1’=‘value1’{, ‘key2’=‘value2’} ) }
parancs az adatok célfürtbe való betöltésére szolgál mind a rendszerindítás, mind a replikáció növekményes fázisai számára. Ez [database name]
lehet ugyanaz, mint a forrás vagy egy másik név a célfürtön. Ez [location]
a korábbi REPL DUMP
parancs kimenetéből származó helyet jelöli. Ez azt jelenti, hogy a célfürtnek képesnek kell lennie a forrásfürthöz való beszélgetésre. A WITH
záradékot elsősorban a célfürt újraindításának megakadályozása érdekében adták hozzá, lehetővé téve a replikációt.
repl load tpcds_orc from '/tmp/hive/repl/38896729-67d5-41b2-90dc-46eeed4c5dd0';
Az utolsó replikált eseményazonosító kimenete
A REPL STATUS [database name]
parancs a célfürtökön lesz végrehajtva, és az utolsó replikált event_id
eredményt adja ki. A parancs lehetővé teszi a felhasználók számára, hogy megtudják, milyen állapotba replikálták a célfürtjüket. A parancs kimenetével létrehozhatja a növekményes replikáció következő REPL DUMP
parancsát.
repl status tpcds_orc;
Példa a kimenetre:
last_repl_id |
---|
2925 |
Releváns adatok és metaadatok kiírása a data lake-be
A REPL DUMP [database name] FROM [event-id] { TO [event-id] } { LIMIT [number of events] }
parancs a releváns metaadatok és adatok Azure Data Lake Storage-ba való memóriaképére szolgál. Ez a parancs a növekményes fázisban használatos, és a forrásraktáron fut. Ez FROM [event-id]
a növekményes fázishoz szükséges, és az érték event-id
a parancs célraktáron való futtatásával REPL STATUS [database name]
származtatható.
repl dump tpcds_orc from 2925;
Példa a kimenetre:
dump_dir | last_repl_id |
---|---|
/tmp/hive/repl/38896729-67d5-41b2-90dc-466466agadd0 | 2960 |
Hive replikációs folyamat
A következő lépések a Hive-replikációs folyamat során bekövetkező szekvenciális események.
Győződjön meg arról, hogy a replikálni kívánt táblák egy adott szabályzat replikációs forrásaként vannak beállítva.
A
REPL_DUMP
parancsot a rendszer az elsődleges fürtnek adja ki az olyan kapcsolódó korlátozásokkal, mint az adatbázis neve, az eseményazonosító tartománya és az Azure Data Lake Storage Gen2 storage URL-címe.A rendszer szerializálja az összes nyomon követett eseményt a metaadattárból a legújabbba. Ezt a memóriaképet a rendszer az elsődleges fürt Azure Data Lake Storage Gen2-tárfiókjában tárolja a megadott URL-címen
REPL_DUMP
.Az elsődleges fürt megőrzi a replikáció metaadatait az elsődleges fürt Azure Data Lake Storage Gen2-tárolójában. Az elérési út konfigurálható az Ambari Hive Config felhasználói felületén. A folyamat megadja a metaadatok tárolásának elérési útját, valamint a legújabb nyomon követett DML/DDL-esemény azonosítóját.
A
REPL_LOAD
parancsot a másodlagos fürt adja ki. A parancs a 3. lépésben konfigurált útvonalra mutat.A másodlagos fürt beolvassa a metaadatfájlt a 3. lépésben létrehozott nyomon követett eseményekkel. Győződjön meg arról, hogy a másodlagos fürt hálózati kapcsolattal rendelkezik annak az elsődleges fürtnek az Azure Data Lake Storage Gen2-tárolója felé, ahonnan a nyomon követett események
REPL_DUMP
tárolódnak.A másodlagos fürt elosztott másolási (
DistCP
) számítást készít.A másodlagos fürt adatokat másol az elsődleges fürt tárolójából.
A másodlagos fürt metaadattára frissül.
Az utolsó nyomon követett eseményazonosító az elsődleges metaadattárban van tárolva.
A növekményes replikáció ugyanazt a folyamatot követi, és bemenetként az utolsó replikált eseményazonosítót igényli. Ez az utolsó replikációs esemény óta növekményes másolathoz vezet. A növekményes replikációkat általában előre meghatározott gyakorisággal automatizálják a szükséges helyreállítási pont-célkitűzések (RPO) elérése érdekében.
Replikációs minták
A replikáció általában egyirányú módon van konfigurálva az elsődleges és a másodlagos között, ahol az elsődleges szolgáltatás a kérelmek olvasására és írására is képes. A másodlagos fürt csak a kérések olvasását irányítja. Ha katasztrófa történik, írások engedélyezettek a másodlagoson, de a fordított replikációt vissza kell állítani az elsődlegesre.
A Hive-replikációhoz számos minta használható, beleértve az elsődleges – másodlagos, a küllős és a küllős, valamint a Relay replikációt.
A HDInsight Active Primary – Standby Secondary egy gyakori üzletmenet-folytonossági és vészhelyreállítási (BCDR) minta, és a HiveReplicationV2 ezt a mintát regionálisan elkülönített HDInsight Hadoop-fürtökkel és virtuális hálózatok közötti társviszony-létesítéssel használhatja. A replikációautomatizálási szkriptek üzemeltetéséhez a két fürthöz társviszonyban álló közös virtuális gép használható. A HDInsight BCDR-mintákról további információt a HDInsight üzletmenet-folytonossági dokumentációjában talál.
Hive-replikáció vállalati biztonsági csomaggal
Azokban az esetekben, amikor a Hive-replikációt nagyvállalati biztonsági csomaggal rendelkező HDInsight Hadoop-fürtökön tervezik, a Ranger metaadattár és a Microsoft Entra Domain Services replikációs mechanizmusait kell figyelembe véve végrehajtania.
A Microsoft Entra Domain Services replikakészletek funkciójával több Microsoft Entra Domain Services-replikakészletet hozhat létre Microsoft Entra-bérlőnként több régióban. Minden egyes replikakészletet a saját régiójukban lévő HDInsight virtuális hálózatokkal kell társviszonyba állítani. Ebben a konfigurációban a Microsoft Entra Domain Services módosításai, beleértve a konfigurációt, a felhasználói identitást és a hitelesítő adatokat, a csoportokat, a csoportházirend-objektumokat, a számítógép-objektumokat és egyéb módosításokat a felügyelt tartomány összes replikakészletére alkalmazza a Microsoft Entra Domain Services replikációja használatával.
A Ranger-szabályzatok rendszeres időközönként biztonsági másolatot készíthetnek, és replikálhatók az elsődlegesről a másodlagosra a Ranger Import-Export funkcióval. A Ranger-szabályzatok teljes vagy részhalmazát replikálhatja attól függően, hogy milyen szintű engedélyeket szeretne implementálni a másodlagos fürtön.
Mintakód
Az alábbi kódütemezés bemutatja, hogyan valósítható meg a rendszerindítás és a növekményes replikáció egy úgynevezett tpcds_orc
mintatáblán.
Állítsa be a táblát a replikációs szabályzat forrásának.
ALTER DATABASE tpcds_orc SET DBPROPERTIES ('repl.source. for'='replpolicy1');
Bootstrap-memóriakép az elsődleges fürtben.
repl dump tpcds_orc with ('hive.repl.rootdir'='/tmpag/hiveag/replag');
Példa a kimenetre:
dump_dir last_repl_id /tmpag/hiveag/replag/675d1bea-2361-4cad-bcbf-8680d305a27a 2925 Rendszerindítási terhelés a másodlagos fürtön.
repl load tpcds_orc from '/tmpag/hiveag/replag 675d1bea-2361-4cad-bcbf-8680d305a27a';
Ellenőrizze a
REPL
másodlagos fürt állapotát.repl status tpcds_orc;
last_repl_id 2925 Növekményes memóriakép az elsődleges fürtben.
repl dump tpcds_orc from 2925 with ('hive.repl.rootdir'='/tmpag/hiveag/ replag');
Példa a kimenetre:
dump_dir last_repl_id /tmpag/hiveag/replag/31177ff7-a40f-4f67-a613-3b64ebe3bb31 2960 Növekményes terhelés másodlagos fürtön.
repl load tpcds_orc from '/tmpag/hiveag/replag/31177ff7-a40f-4f67-a613-3b64ebe3bb31';
Ellenőrizze
REPL
az állapotot a másodlagos fürtön.repl status tpcds_orc;
last_repl_id 2960
Következő lépések
A cikkben tárgyalt elemekről a következő témakörben olvashat bővebben: