Megosztás a következőn keresztül:


Biztonsági mentés és replikáció beállítása az Apache HBase-hez és az Apache Phoenixhez a HDInsighton

Az Apache HBase számos módszert támogat az adatvesztés elleni védelemhez:

  • hbase A mappa másolása
  • Exportálás és importálás
  • Táblázatok másolása
  • Pillanatképek
  • Replikáció

Megjegyzés:

Az Apache Phoenix a metaadatokat HBase-táblákban tárolja, így a metaadatok biztonsági mentése a HBase rendszerkatalógus-tábláinak biztonsági mentésekor történik.

A következő szakaszok az egyes megközelítések használati forgatókönyvét ismertetik.

A hbase mappa másolása

Ezzel a módszerrel az összes HBase-adatot átmásolhatja anélkül, hogy ki tudná választani a táblák vagy oszlopcsaládok egy részhalmazát. Az ezt követő megközelítések nagyobb ellenőrzést biztosítanak.

A HDInsightban található HBase a fürt létrehozásakor kiválasztott alapértelmezett tárolót használja, akár Azure Storage-blobokat, akár Azure Data Lake Storage-t. A HBase mindkét esetben az alábbi elérési úton tárolja az adatokat és a metaadatfájlokat:

/hbase

  • Egy Azure Storage-fiókban a hbase mappa a blobtároló gyökerében található:

    wasbs://<containername>@<accountname>.blob.core.windows.net/hbase

  • Az Azure Data Lake Storage-ban a mappa a hbase fürt kiépítésekor megadott gyökérútvonal alatt található. Ez a gyökérútvonal általában rendelkezik egy clusters mappával, amely a HDInsight-fürtről elnevezett almappával rendelkezik:

    /clusters/<clusterName>/hbase

A mappa mindkét esetben tartalmazza az összes adatot, hbase amelyet a HBase kiürített a lemezre, de lehet, hogy nem tartalmazza a memóriában lévő adatokat. Mielőtt a HBase-adatok pontos ábrázolásaként hivatkozhat erre a mappára, le kell állítania a fürtöt.

A fürt törlése után hagyhatja helyben az adatokat, vagy átmásolhatja az adatokat egy új helyre:

  • Hozzon létre egy új HDInsight-példányt, amely az aktuális tárolási helyre mutat. Az új példány az összes meglévő adattal jön létre.

  • Másolja a hbase mappát egy másik Azure Storage-blobtárolóba vagy Data Lake Storage-helyre, majd kezdjen új fürtöt az adatokkal. Az Azure Storage esetében használja az AzCopyt, a Data Lake Storage esetében pedig az AdlCopyt.

Exportálás és importálás

A forrás HDInsight-fürtön az Exportálás segédprogrammal (a HBase-ben) exportálhat adatokat egy forrástáblából az alapértelmezett csatolt tárolóba. Ezután átmásolhatja az exportált mappát a céltárhelyre, és futtathatja az Importálás segédprogramot a cél HDInsight-fürtön.

Táblaadatok exportálásához először az SSH-t a forrás HDInsight-fürt fő csomópontjába, majd futtassa a következő hbase parancsot:

hbase org.apache.hadoop.hbase.mapreduce.Export "<tableName>" "/<path>/<to>/<export>"

Az exportálási könyvtár nem létezhet. A tábla neve megkülönbözteti a kis- és nagybetűk nevét.

Táblaadatok importálásához az SSH-t a cél HDInsight-fürt fő csomópontjába kell importálnia, majd futtassa a következő hbase parancsot:

hbase org.apache.hadoop.hbase.mapreduce.Import "<tableName>" "/<path>/<to>/<export>"

A táblának már léteznie kell.

Adja meg az alapértelmezett tároló teljes exportálási útvonalát vagy a csatolt tárolási beállítások bármelyikét. Például az Azure Storage-ban:

wasbs://<containername>@<accountname>.blob.core.windows.net/<path>

Az Azure Data Lake Storage Gen2-ben a szintaxis a következő:

abfs://<containername>@<accountname>.dfs.core.windows.net/<path>

Az Azure Data Lake Storage Gen1-ben a szintaxis a következő:

adl://<accountName>.azuredatalakestore.net:443/<path>

Ez a megközelítés táblázatszintű részletességet kínál. Megadhatja a belefoglalandó sorok dátumtartományát is, amely lehetővé teszi a folyamat növekményes végrehajtását. Minden dátum ezredmásodpercben van a Unix-korszak óta.

hbase org.apache.hadoop.hbase.mapreduce.Export "<tableName>" "/<path>/<to>/<export>" <numberOfVersions> <startTimeInMS> <endTimeInMS>

Meg kell adnia az egyes exportálandó sorok verzióinak számát. Ha az összes verziót bele szeretné foglalni a dátumtartományba, állítsa a <numberOfVersions> maximális lehetséges sorverziónál nagyobb értékre, például 100000 értékre.

Táblázatok másolása

A CopyTable segédprogram egy forrástáblából, sorról sorra másol adatokat egy olyan meglévő céltáblába, amelynek sémája megegyezik a forráséval. A céltábla lehet ugyanazon a fürtön vagy egy másik HBase-fürtön. A táblanevek megkülönböztetik a kis- és nagybetűket.

A CopyTable fürtben való használatához az SSH-t a forrás HDInsight-fürt fő csomópontjába kell csatlakoztatnia, majd futtassa a hbase következő parancsot:

hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name=<destTableName> <srcTableName>

Ha a CopyTable használatával egy másik fürt táblájára szeretne másolni, adja hozzá a peer kapcsolót a célfürt címével:

hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name=<destTableName> --peer.adr=<destinationAddress> <srcTableName>

A célcím a következő három részből áll:

<destinationAddress> = <ZooKeeperQuorum>:<Port>:<ZnodeParent>

  • <ZooKeeperQuorum> Az Apache ZooKeeper-csomópontok teljes tartományneveinek vesszővel tagolt listája, például:

    <zookeepername1.54o2oqawzlwevlfxgay2500xtg.dx.internal.cloudapp.net,zookeepername2.54o2oqawzlwevlfxgay2500xtg.dx.internal.cloudapp.net,zookeepername3.54o2oqawzlwevlfxgay2500xtg.dx.internal.cloudapp.net><><>

  • <Port> a HDInsight alapértelmezett értéke 2181, tehát <ZnodeParent> /hbase-unsecurea teljes <destinationAddress> érték a következő:

    <zookeepername1.54o2oqawzlwevlfxgay2500xtg.dx.internal.cloudapp.net,zookeepername2.54o2oqawzlwevlfxgay2500xtg.dx.internal.cloudapp.net,zookeepername3.54o2oqawzlwevlfxgay2500xtg.dx.internal.cloudapp.net><<>>:2181:/hbase-unsecure

A HDInsight-fürt értékeinek lekéréséről ebben a cikkben az Apache ZooKeeper kvórumlistájának manuális gyűjtéséről olvashat.

A CopyTable segédprogram paramétereket is támogat a másolandó sorok időtartományának megadásához, valamint a másolandó tábla oszlopcsaládjainak részhalmazának megadásához. A CopyTable által támogatott paraméterek teljes listájának megtekintéséhez futtassa a CopyTable parancsot paraméterek nélkül:

hbase org.apache.hadoop.hbase.mapreduce.CopyTable

A CopyTable megvizsgálja a forrástábla teljes tartalmát, amelyet átmásol a céltáblába. Ez csökkentheti a HBase-fürt teljesítményét a CopyTable végrehajtása során.

Megjegyzés:

Az adatok táblák közötti másolásának automatizálásához tekintse meg a hdi_copy_table.sh szkriptet a GitHub Azure HBase Utils-adattárában .

Manuálisan gyűjtse össze az Apache ZooKeeper kvórumlistáját

Ha mindkét HDInsight-fürt ugyanabban a virtuális hálózatban van, ahogyan azt korábban leírtuk, a belső gazdagépnév-feloldás automatikus. Ha a CopyTable for HDInsight-fürtöket vpn-átjáróval összekapcsolt két különálló virtuális hálózatban szeretné használni, meg kell adnia a Zookeeper-csomópontok gazda IP-címét a kvórumban.

A kvórumgazdanevek beszerzéséhez futtassa a következő curl parancsot:

curl -u admin:<password> -X GET -H "X-Requested-By: ambari" "https://<clusterName>.azurehdinsight.net/api/v1/clusters/<clusterName>/configurations?type=hbase-site&tag=TOPOLOGY_RESOLVED" | grep "hbase.zookeeper.quorum"

A curl parancs lekéri a HBase konfigurációs adatait tartalmazó JSON-dokumentumot, és a grep parancs csak a "hbase.zookeeper.quorum" bejegyzést adja vissza, például:

"hbase.zookeeper.quorum" : "<zookeepername1>.54o2oqawzlwevlfxgay2500xtg.dx.internal.cloudapp.net,<zookeepername2>.54o2oqawzlwevlfxgay2500xtg.dx.internal.cloudapp.net,<zookeepername3>.54o2oqawzlwevlfxgay2500xtg.dx.internal.cloudapp.net"

A kvórumgazdanevek értéke a kettősponttól jobbra lévő teljes sztring.

A gazdagépek IP-címeinek lekéréséhez használja az alábbi curl parancsot az előző listában szereplő összes gazdagéphez:

curl -u admin:<password> -X GET -H "X-Requested-By: ambari" "https://<clusterName>.azurehdinsight.net/api/v1/clusters/<clusterName>/hosts/<zookeeperHostFullName>" | grep "ip"

Ebben a curl parancsban <zookeeperHostFullName> egy ZooKeeper-gazdagép teljes DNS-neve szerepel, például a példa <zookeepername1>.54o2oqawzlwevlfxgay2500xtg.dx.internal.cloudapp.net. A parancs kimenete tartalmazza a megadott gazdagép IP-címét, például:

100 "ip" : "10.0.0.9",

Miután begyűjtötte a kvórum összes ZooKeeper-csomópontjának IP-címét, építse újra a célcímet:

<destinationAddress> = <Host_1_IP>,<Host_2_IP>,<Host_3_IP>:<Port>:<ZnodeParent>

A jelen példában:

<destinationAddress> = 10.0.0.9,10.0.0.8,10.0.0.12:2181:/hbase-unsecure

Pillanatképek

A pillanatképek lehetővé teszik az adatok idő szerinti biztonsági mentését a HBase-adattárban. A pillanatképek minimális többletterheléssel rendelkeznek, és másodperceken belül befejeződnek, mivel a pillanatkép-művelet tulajdonképpen egy metaadat-művelet, amely az adott pillanatban rögzíti a tárban lévő összes fájl nevét. Pillanatképek készítésekor a rendszer nem másol tényleges adatokat. A pillanatképek a HDFS-ben tárolt adatok nem módosítható jellegére támaszkodnak, ahol a frissítések, a törlések és a beszúrások mind új adatként jelennek meg. Visszaállíthat (klónozhat) egy pillanatképet ugyanazon a fürtön, vagy exportálhat egy pillanatképet egy másik fürtbe.

Pillanatkép létrehozásához az SSH lépjen be a HDInsight HBase-fürt fő csomópontjára, és indítsa el a rendszerhéjat hbase :

hbase shell

A hbase-rendszerhéjon belül használja a pillanatkép parancsot a tábla és a pillanatkép nevével:

snapshot '<tableName>', '<snapshotName>'

Ha név szerint szeretne visszaállítani egy pillanatképet a hbase rendszerhéjon belül, először tiltsa le a táblát, majd állítsa vissza a pillanatképet, és engedélyezze újra a táblát:

disable '<tableName>'
restore_snapshot '<snapshotName>'
enable '<tableName>'

Pillanatkép új táblába való visszaállításához használja a clone_snapshot:

clone_snapshot '<snapshotName>', '<newTableName>'

Ha egy pillanatképet egy másik fürt számára szeretne exportálni a HDFS-be, először hozza létre a korábban ismertetett pillanatképet, majd használja az ExportSnapshot segédprogramot. Futtassa ezt a segédprogramot az SSH-munkameneten belülről a fő csomópontra, nem pedig a rendszerhéjon hbase belül:

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot <snapshotName> -copy-to <hdfsHBaseLocation>

A <hdfsHBaseLocation> forrásfürt számára elérhető tárolóhelyek bármelyike lehet, és a célfürt által használt hbase mappára kell mutatnia. Ha például egy másodlagos Azure Storage-fiók van csatlakoztatva a forrásfürthöz, és ez a fiók hozzáférést biztosít a célfürt alapértelmezett tárolója által használt tárolóhoz, ezt a parancsot használhatja:

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot 'Snapshot1' -copy-to 'wasbs://secondcluster@myaccount.blob.core.windows.net/hbase'

Ha nem rendelkezik másodlagos Azure Storage-fiókkal a forrásfürthöz, vagy ha a forrásfürt helyszíni fürt (vagy nem HDI-fürt), engedélyezési problémák léphetnek fel a HDI-fürt tárfiókjának elérésekor. A probléma megoldásához adja meg a tárfiók kulcsát parancssori paraméterként az alábbi példában látható módon. A tárfiók kulcsát az Azure Portalon szerezheti be.

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -Dfs.azure.account.key.myaccount.blob.core.windows.net=mykey -snapshot 'Snapshot1' -copy-to 'wasbs://secondcluster@myaccount.blob.core.windows.net/hbase'

Ha a célfürt egy ADLS Gen 2-fürt, módosítsa az előző parancsot az ADLS Gen 2 által használt konfigurációk módosításához:

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -Dfs.azure.account.key.<account_name>.dfs.core.windows.net=<key> -Dfs.azure.account.auth.type.<account_name>.dfs.core.windows.net=SharedKey -Dfs.azure.always.use.https.<account_name>.dfs.core.windows.net=false -Dfs.azure.account.keyprovider.<account_name>.dfs.core.windows.net=org.apache.hadoop.fs.azurebfs.services.SimpleKeyProvider -snapshot 'Snapshot1' -copy-to 'abfs://<container>@<account_name>.dfs.core.windows.net/hbase'

A pillanatkép exportálása után az SSH a célfürt fő csomópontjába kerül, és a korábban ismertetett paranccsal visszaállítja a clone_snapshot pillanatképet.

A pillanatképek teljes biztonsági másolatot nyújtanak egy tábláról a snapshot parancs idején. A pillanatképek nem biztosítanak növekményes pillanatképeket az időablakok szerint, és nem adhatók meg a pillanatképbe belefoglalandó oszlopcsaládok részhalmazai sem.

Replikáció

A HBase-replikáció automatikusan leküldi a tranzakciókat egy forrásfürtről egy célfürtre egy aszinkron mechanizmus használatával, amely minimális többletterhelést okoz a forrásfürtön. A HDInsightban olyan fürtök közötti replikációt állíthat be, ahol:

  • A forrás- és célfürtök ugyanabban a virtuális hálózatban találhatók.
  • A forrás- és célfürtök különböző, VPN-átjáróval csatlakoztatott virtuális hálózatokban találhatók, de mindkét fürt ugyanazon a földrajzi helyen található.
  • A forrásfürtök és a célfürtök különböző, VPN-átjáróval csatlakoztatott virtuális hálózatokban találhatók, és mindegyik fürt más földrajzi helyen található.

A replikáció beállításának általános lépései a következők:

  1. A forrásfürtön hozza létre a táblákat, és töltse fel az adatokat.
  2. A célfürtön hozzon létre üres céltáblákat a forrástábla sémájával.
  3. Regisztrálja a célfürtöt társként a forrásfürthöz.
  4. Engedélyezze a replikációt a kívánt forrástáblákon.
  5. Másolja a meglévő adatokat a forrástáblákból a céltáblákba.
  6. A replikáció automatikusan átmásolja az új adatmódosításokat a forrástáblákba a céltáblákba.

A HDInsighton végzett replikáció engedélyezéséhez alkalmazzon szkriptműveletet a futó FORRÁS HDInsight-fürtre. A fürt replikációjának engedélyezéséről, illetve a virtuális hálózatokban azure Resource Manager-sablonok használatával létrehozott mintafürtök replikációjának kipróbálásáról az Apache HBase-replikáció konfigurálása című témakörben olvashat. Ez a cikk a Phoenix-metaadatok replikációjának engedélyezésére vonatkozó utasításokat is tartalmaz.

További lépések