Sdílet prostřednictvím


Nastavení zálohování a replikace pro Apache HBase a Apache Phoenix ve službě HDInsight

Apache HBase podporuje několik přístupů pro ochranu před ztrátou dat:

  • Zkopírování hbase složky
  • Export a import
  • Kopírování tabulek
  • Snapshots
  • Replikace

Poznámka:

Apache Phoenix ukládá metadata v tabulkách HBase, aby se metadata zálohovala při zálohování tabulek systémového katalogu HBase.

Následující části popisují scénář použití pro každý z těchto přístupů.

Zkopírování složky hbase

Pomocí tohoto přístupu zkopírujete všechna data HBase, aniž byste mohli vybrat podmnožinu tabulek nebo rodin sloupců. Následné přístupy poskytují větší kontrolu.

HBase v HDInsight používá výchozí úložiště vybrané při vytváření clusteru, a to buď objekty blob služby Azure Storage, nebo Azure Data Lake Storage. V obou případech HBase ukládá data a soubory metadat pod následující cestou:

/hbase

  • V účtu hbase azure Storage se složka nachází v kořenovém adresáři kontejneru objektů blob:

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

  • Ve službě Azure Data Lake Storage se složka nachází v kořenové cestě, hbase kterou jste zadali při zřizování clusteru. Tato kořenová cesta má obvykle clusters složku s podsložkou pojmenovanou po clusteru HDInsight:

    /clusters/<clusterName>/hbase

V obou případech hbase složka obsahuje všechna data, která HBase vyprázdnila na disk, ale nemusí obsahovat data v paměti. Než budete moct tuto složku spoléhat na přesnou reprezentaci dat HBase, musíte cluster vypnout.

Po odstranění clusteru můžete buď ponechat data na místě, nebo je zkopírovat do nového umístění:

  • Vytvořte novou instanci HDInsight odkazující na aktuální umístění úložiště. Nová instance se vytvoří se všemi existujícími daty.

  • hbase Zkopírujte složku do jiného kontejneru objektů blob služby Azure Storage nebo do umístění Data Lake Storage a pak spusťte nový cluster s daty. Pro Azure Storage použijte AzCopy a pro Data Lake Storage použijte AdlCopy.

Export a import

Ve zdrojovém clusteru HDInsight použijte nástroj Export (zahrnutý v HBase) k exportu dat ze zdrojové tabulky do výchozího připojeného úložiště. Pak můžete zkopírovat exportovanou složku do cílového umístění úložiště a spustit nástroj Import v cílovém clusteru HDInsight.

Pokud chcete exportovat data tabulky, nejprve SSH do hlavního uzlu zdrojového clusteru HDInsight a pak spusťte následující hbase příkaz:

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

Adresář exportu již nesmí existovat. V názvu tabulky se rozlišují malá a velká písmena.

Pokud chcete importovat data tabulky, připojte se přes SSH do hlavního uzlu cílového clusteru HDInsight a spusťte následující hbase příkaz:

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

Tabulka už musí existovat.

Zadejte úplnou cestu exportu k výchozímu úložišti nebo k některé z připojených možností úložiště. Například ve službě Azure Storage:

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

V Azure Data Lake Storage Gen2 je syntaxe následující:

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

V Azure Data Lake Storage Gen1 je syntaxe následující:

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

Tento přístup nabízí členitost na úrovni tabulky. Můžete také zadat rozsah kalendářních dat pro řádky, které se mají zahrnout, což vám umožní provést proces přírůstkově. Každé datum je v milisekundách od epochy Unixu.

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

Musíte zadat počet verzí jednotlivých řádků, které chcete exportovat. Pokud chcete zahrnout všechny verze v rozsahu kalendářních dat, nastavte <numberOfVersions> hodnotu větší než maximální možné verze řádků, například 1 00000.

Kopírování tabulek

Nástroj CopyTable kopíruje data ze zdrojové tabulky, řádku po řádku do existující cílové tabulky se stejným schématem jako zdroj. Cílová tabulka může být ve stejném clusteru nebo jiném clusteru HBase. V názvech tabulek se rozlišují malá a velká písmena.

Pokud chcete použít CopyTable v rámci clusteru, připojte se přes SSH do hlavního uzlu zdrojového clusteru HDInsight a spusťte tento hbase příkaz:

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

Pokud chcete použít CopyTable ke kopírování do tabulky v jiném clusteru, přidejte peer přepínač s adresou cílového clusteru:

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

Cílová adresa se skládá z následujících tří částí:

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

  • <ZooKeeperQuorum> je čárkami oddělený seznam plně kvalifikovaných názvů domén uzlů Apache ZooKeeper, například:

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

  • <Port> ve službě HDInsight je výchozí hodnota 2181 a <ZnodeParent> je /hbase-unsecure, takže dokončení <destinationAddress> by bylo:

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

Podrobnosti o tom, jak tyto hodnoty pro cluster HDInsight načíst, najdete v tomto článku v části Ruční shromažďování seznamu kvora Apache ZooKeeper.

Nástroj CopyTable podporuje také parametry pro určení časového rozsahu řádků, které se mají kopírovat, a určení podmnožina rodin sloupců v tabulce, která se má zkopírovat. Úplný seznam parametrů podporovaných nástrojem CopyTable zobrazíte spuštěním příkazu CopyTable bez jakýchkoli parametrů:

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

CopyTable prohledá celý obsah zdrojové tabulky, který se zkopíruje do cílové tabulky. Tím se může snížit výkon clusteru HBase při provádění nástroje CopyTable.

Poznámka:

Pokud chcete automatizovat kopírování dat mezi tabulkami, přečtěte si hdi_copy_table.sh skript v úložišti Azure HBase Utils na GitHubu.

Ruční shromáždění seznamu kvora Apache ZooKeeper

Pokud jsou oba clustery HDInsight ve stejné virtuální síti, jak je popsáno výše, je interní překlad názvů hostitelů automatický. Pokud chcete použít CopyTable pro clustery HDInsight ve dvou samostatných virtuálních sítích připojených službou VPN Gateway, budete muset zadat IP adresy hostitele uzlů Zookeeper v kvoru.

Pokud chcete získat názvy hostitelů kvora, spusťte následující příkaz curl:

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"

Příkaz curl načte dokument JSON s informacemi o konfiguraci HBase a grep příkaz vrátí pouze položku hbase.zookeeper.quorum, například:

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

Hodnota názvů hostitelů kvora je celý řetězec napravo od dvojtečky.

Pokud chcete načíst IP adresy těchto hostitelů, použijte následující příkaz curl pro každého hostitele v předchozím seznamu:

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

V tomto příkazu <zookeeperHostFullName> curl je úplný název DNS hostitele ZooKeeper, například příklad <zookeepername1>.54o2oqawzlwevlfxgay2500xtg.dx.internal.cloudapp.net. Výstup příkazu obsahuje IP adresu zadaného hostitele, například:

100 "ip" : "10.0.0.9",

Po shromáždění IP adres pro všechny uzly ZooKeeper v kvoru znovu sestavte cílovou adresu:

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

V našem příkladu:

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

Snapshots

Snímky umožňují v úložišti dat HBase zálohovat data k určitému bodu v čase. Snímky mají během několika sekund minimální režii a dokončení, protože operace vytvoření snímku je efektivně operace metadat, která zachytává názvy všech souborů v úložišti v daném okamžiku. V okamžiku snímku se nezkopírují žádná skutečná data. Snímky spoléhají na neměnnou povahu dat uložených v HDFS, kde jsou všechny aktualizace, odstranění a vkládání reprezentovány jako nová data. Můžete obnovit (klonovat) snímek ve stejném clusteru nebo exportovat snímek do jiného clusteru.

Pokud chcete vytvořit snímek, připojte se přes SSH k hlavnímu uzlu clusteru HDInsight HBase a spusťte hbase prostředí:

hbase shell

V prostředí hbase použijte příkaz snapshot s názvy tabulky a tohoto snímku:

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

Pokud chcete obnovit snímek podle názvu v rámci hbase prostředí, nejprve tabulku zakažte, pak obnovte snímek a znovu povolte tabulku:

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

Pokud chcete obnovit snímek do nové tabulky, použijte clone_snapshot:

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

Pokud chcete exportovat snímek do HDFS pro použití v jiném clusteru, nejprve vytvořte snímek, jak je popsáno výše, a pak použijte nástroj ExportSnapshot. Spusťte tento nástroj z relace SSH do hlavního uzlu, ne v hbase prostředí:

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

Může <hdfsHBaseLocation> to být libovolné umístění úložiště přístupné pro váš zdrojový cluster a mělo by odkazovat na složku hbase používanou cílovým clusterem. Pokud máte například sekundární účet Azure Storage připojený ke zdrojovému clusteru a tento účet poskytuje přístup ke kontejneru používanému výchozím úložištěm cílového clusteru, můžete použít tento příkaz:

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

Pokud nemáte k zdrojovému clusteru připojený sekundární účet Azure Storage nebo pokud je zdrojový cluster místním clusterem (nebo clusterem bez HDI), může dojít k problémům s autorizací při pokusu o přístup k účtu úložiště clusteru HDI. Pokud chcete tento problém vyřešit, zadejte klíč k účtu úložiště jako parametr příkazového řádku, jak je znázorněno v následujícím příkladu. Klíč k účtu úložiště můžete získat na webu Azure Portal.

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'

Pokud je cílovým clusterem cluster ADLS Gen2, změňte předchozí příkaz tak, aby se přizpůsobil konfiguracím používaným ADLS Gen2:

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'

Po exportu snímku připojte SSH do hlavního uzlu cílového clusteru a obnovte snímek pomocí clone_snapshot příkazu, jak je popsáno výše.

Snímky poskytují úplnou zálohu tabulky v době snapshot příkazu. Snímky neposkytují možnost provádět přírůstkové snímky podle časových intervalů ani určit podmnožinu rodin sloupců, které se mají zahrnout do snímku.

Replikace

Replikace HBase automaticky odesílá transakce ze zdrojového clusteru do cílového clusteru pomocí asynchronního mechanismu s minimální režií na zdrojový cluster. Ve službě HDInsight můžete nastavit replikaci mezi clustery, kde:

  • Zdrojové a cílové clustery jsou ve stejné virtuální síti.
  • Zdrojové a cílové clustery jsou v různých virtuálních sítích připojených bránou VPN, ale oba clustery existují ve stejném geografickém umístění.
  • Zdrojové clustery a cílové clustery jsou v různých virtuálních sítích připojených bránou VPN a každý cluster existuje v jiném geografickém umístění.

Mezi obecné kroky nastavení replikace patří:

  1. Ve zdrojovém clusteru vytvořte tabulky a naplňte data.
  2. V cílovém clusteru vytvořte prázdné cílové tabulky se schématem zdrojové tabulky.
  3. Zaregistrujte cílový cluster jako partnerský vztah ke zdrojovému clusteru.
  4. Povolte replikaci u požadovaných zdrojových tabulek.
  5. Zkopírujte existující data ze zdrojových tabulek do cílových tabulek.
  6. Replikace automaticky kopíruje nové úpravy dat do zdrojových tabulek do cílových tabulek.

Pokud chcete povolit replikaci ve službě HDInsight, použijte akci skriptu na spuštěný zdrojový cluster HDInsight. Návod k povolení replikace v clusteru nebo experimentování s replikací na ukázkových clusterech vytvořených ve virtuálních sítích pomocí šablon Azure Resource Manageru najdete v tématu Konfigurace replikace Apache HBase. Tento článek obsahuje také pokyny pro povolení replikace metadat Phoenixu.

Další kroky