Nastavení replikace clusteru Apache HBase ve virtuálních sítích Azure

Zjistěte, jak nastavit replikaci Apache HBase ve virtuální síti nebo mezi dvěma virtuálními sítěmi v Azure.

Replikace clusteru používá metodologii zdrojového nabízení. Cluster HBase může být zdrojem nebo cílem nebo může plnit obě role najednou. Replikace je asynchronní. Cílem replikace je konečná konzistence. Když zdroj obdrží úpravu do řady sloupců, když je povolená replikace, rozšíří se úpravy do všech cílových clusterů. Pokud se data replikují z jednoho clusteru do druhého, zdrojový cluster a všechny clustery, které už sledované data spotřebovaly, aby se zabránilo smyčkám replikace.

V tomto článku nastavíte replikaci zdrojového cíle. Další topologie clusteru najdete v referenční příručce k Apache HBase.

Toto jsou případy použití replikace HBase pro jednu virtuální síť:

  • Vyrovnávání zatížení. Můžete například spouštět kontroly nebo úlohy MapReduce v cílovém clusteru a ingestovat data ve zdrojovém clusteru.
  • Přidání vysoké dostupnosti
  • Migrace dat z jednoho clusteru HBase do jiného
  • Upgrade clusteru Azure HDInsight z jedné verze na jinou.

Následují případy použití replikace HBase pro dvě virtuální sítě:

  • Nastavení zotavení po havárii
  • Vyrovnávání zatížení a dělení aplikace.
  • Přidání vysoké dostupnosti

Clustery můžete replikovat pomocí skriptových skriptů akcí z GitHubu.

Požadavky

Než začnete s tímto článkem, musíte mít předplatné Azure. Viz Získání bezplatné zkušební verze Azure.

Nastavení prostředí

Máte tři možnosti konfigurace:

  • Dva clustery Apache HBase v jedné virtuální síti Azure
  • Dva clustery Apache HBase ve dvou různých virtuálních sítích ve stejné oblasti.
  • Dva clustery Apache HBase ve dvou různých virtuálních sítích ve dvou různých oblastech (geografická replikace).

Tento článek popisuje scénář geografické replikace.

Abychom vám pomohli s nastavením prostředí, vytvořili jsme některé šablony Azure Resource Manageru. Pokud chcete prostředí nastavit pomocí jiných metod, přečtěte si téma:

Nastavení dvou virtuálních sítí ve dvou různých oblastech

Pokud chcete použít šablonu, která vytvoří dvě virtuální sítě ve dvou různých oblastech a připojení VPN mezi virtuálními sítěmi, vyberte následující tlačítko Nasadit do Azure .

Tlačítko Nasadit do Azure pro nový cluster

Některé pevně zakódované hodnoty v šabloně:

Virtuální síť 1

Vlastnost Hodnota
Umístění USA – západ
Název virtuální sítě <ClusterNamePrevix-vnet1>
Předpona adresního prostoru 10.1.0.0/16
Název podsítě podsíť 1
Předpona podsítě 10.1.0.0/24
Název podsítě (brány) GatewaySubnet (nejde změnit)
Předpona podsítě (brány) 10.1.255.0/27
Název brány vnet1gw
Typ brány Vpn
Typ sítě VPN brány RouteBased
Skladová položka brány Basic
IP adresa brány vnet1gwip

Virtuální síť 2

Vlastnost Hodnota
Umístění USA – východ
Název virtuální sítě <ClusterNamePrevix-vnet2>
Předpona adresního prostoru 10.2.0.0/16
Název podsítě podsíť 1
Předpona podsítě 10.2.0.0/24
Název podsítě (brány) GatewaySubnet (nejde změnit)
Předpona podsítě (brány) 10.2.255.0/27
Název brány vnet2gw
Typ brány Vpn
Typ sítě VPN brány RouteBased
Skladová položka brány Basic
IP adresa brány vnet1gwip

Další možností je ruční nastavení dvou různých virtuálních sítí a virtuálních počítačů pomocí následujících kroků.

  1. Vytvoření dvou virtuálních sítí (virtuální sítě) v jiné oblasti
  2. Povolte partnerský vztah v obou virtuálních sítích. Přejděte do virtuální sítě vytvořené v předchozích krocích a potom klikněte na partnerský vztah a přidejte propojení peeringu jiné oblasti. Udělejte to pro obě virtuální sítě.
  3. Vytvořte nejnovější verzi UBUNTU v každé virtuální síti.

Nastavení DNS

V poslední části šablona vytvoří virtuální počítač Ubuntu v každé ze dvou virtuálních sítí. V této části nainstalujete vazbu na dva virtuální počítače DNS a pak nakonfigurujete předávání DNS na těchto dvou virtuálních počítačích.

Pokud chcete nainstalovat Bind, musí yon najít veřejnou IP adresu dvou virtuálních počítačů DNS.

  1. Otevřete Azure Portal.
  2. Otevřete virtuální počítač DNS výběrem skupin > prostředků [název skupiny prostředků] > [vnet1DNS]. Název skupiny prostředků je název skupiny prostředků, který vytvoříte v posledním postupu. Výchozí názvy virtuálních počítačů DNS jsou vnet1DNS a vnet2NDS.
  3. Výběrem možnosti Vlastnosti otevřete stránku vlastností virtuální sítě.
  4. Poznamenejte si veřejnou IP adresu a ověřte také privátní IP adresu. Privátní IP adresa musí být 10.1.0.4 pro vnet1DNS a 10.2.0.4 pro vnet2DNS.
  5. Změňte servery DNS pro obě virtuální sítě tak, aby používaly výchozí (poskytované Azure) servery DNS, aby umožňovaly příchozí a odchozí přístup ke stahování balíčků pro instalaci vazby v následujících krocích.

Chcete-li nainstalovat vazbu, použijte následující postup:

  1. Pomocí SSH se připojte k veřejné IP adrese virtuálního počítače DNS. Následující příklad se připojí k virtuálnímu počítači na adrese 40.68.254.142:

    ssh sshuser@40.68.254.142
    

    Nahraďte sshuser uživatelským účtem SSH, který jste zadali při vytváření virtuálního počítače DNS.

    Poznámka:

    Existují různé způsoby, jak získat ssh nástroj. V systémech Linux, Unix a macOS je k dispozici jako součást operačního systému. Pokud používáte Windows, zvažte jednu z následujících možností:

  2. Chcete-li nainstalovat vazbu, použijte následující příkazy z relace SSH:

     sudo apt-get update -y
     sudo apt-get install bind9 -y
    
  3. Nakonfigurujte vazbu pro předávání požadavků překladu ip adres na místní server DNS. Uděláte to tak, že jako obsah /etc/bind/named.conf.options souboru použijete následující text:

    acl goodclients {
        10.1.0.0/16; # Replace with the IP address range of the virtual network 1
        10.2.0.0/16; # Replace with the IP address range of the virtual network 2
        localhost;
        localhost;
    };
    
    options {
        directory "/var/cache/bind";
        recursion yes;
        allow-query { goodclients; };
    
        forwarders {
            168.63.129.16; #This is the Azure DNS server
        };
    
        dnssec-validation auto;
    
        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
    };
    

    Důležité

    Nahraďte hodnoty v oddílu goodclients rozsahem IP adres dvou virtuálních sítí. Tato část definuje adresy, ze kterých tento server DNS přijímá požadavky.

    Pokud chcete tento soubor upravit, použijte následující příkaz:

    sudo nano /etc/bind/named.conf.options
    

    Pokud chcete soubor uložit, použijte Ctrl+X, Y a pak Enter.

  4. V relaci SSH použijte následující příkaz:

    hostname -f
    

    Tento příkaz vrátí hodnotu podobnou následujícímu textu:

    vnet1DNS.icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net
    

    Text icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net je přípona DNS pro tuto virtuální síť. Uložte tuto hodnotu, protože se použije později.

    Musíte také zjistit příponu DNS z druhého serveru DNS. Potřebujete ho v dalším kroku.

  5. Chcete-li nakonfigurovat vazbu pro překlad názvů DNS pro prostředky ve virtuální síti, použijte jako obsah /etc/bind/named.conf.local souboru následující text:

    // Replace the following with the DNS suffix for your virtual network
    zone "v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net" {
            type forward;
            forwarders {10.2.0.4;}; # The Azure recursive resolver
    };
    

    Důležité

    Musíte nahradit v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net příponou DNS druhé virtuální sítě. Ip adresa služby předávání je privátní IP adresa serveru DNS v druhé virtuální síti.

    Pokud chcete tento soubor upravit, použijte následující příkaz:

    sudo nano /etc/bind/named.conf.local
    

    Pokud chcete soubor uložit, použijte Ctrl+X, Y a pak Enter.

  6. Chcete-li spustit vazbu, použijte následující příkaz:

    sudo service bind9 restart
    
  7. Pokud chcete ověřit, že vazba dokáže přeložit názvy prostředků v jiné virtuální síti, použijte následující příkazy:

    sudo apt install dnsutils
    nslookup vnet2dns.v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net
    

    Důležité

    Nahraďte vnet2dns.v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net plně kvalifikovaným názvem domény (FQDN) virtuálního počítače DNS v jiné síti.

    Nahraďte 10.2.0.4 interní IP adresou vašeho vlastního serveru DNS v druhé virtuální síti.

    Odpověď se podobá následujícímu textu:

    Server:         10.2.0.4
    Address:        10.2.0.4#53
    
    Non-authoritative answer:
    Name:   vnet2dns.v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net
    Address: 10.2.0.4
    

    Doteď nemůžete vyhledat IP adresu z druhé sítě bez zadané IP adresy serveru DNS.

Konfigurace virtuální sítě pro použití vlastního serveru DNS

Pokud chcete virtuální síť nakonfigurovat tak, aby místo rekurzivního překladače Azure používala vlastní server DNS, postupujte následovně:

  1. Na webu Azure Portal vyberte virtuální síť a pak vyberte Servery DNS.

  2. Vyberte Vlastní a zadejte interní IP adresu vlastního serveru DNS. Nakonec vyberte Uložit.

  3. Otevřete virtuální počítač serveru DNS ve virtuální síti 1 a klikněte na Restartovat. Aby se konfigurace DNS projevila, musíte restartovat všechny virtuální počítače ve virtuální síti.

  4. Opakujte kroky konfigurace vlastního serveru DNS pro virtuální síť 2.

K otestování konfigurace DNS se můžete připojit ke dvěma virtuálním počítačům DNS pomocí SSH a pomocí příkazu ping server DNS druhé virtuální sítě pomocí názvu hostitele. Pokud to nepomůže, pomocí následujícího příkazu zkontrolujte stav DNS:

sudo service bind9 status

Vytváření clusterů Apache HBase

Vytvořte cluster Apache HBase v každé ze dvou virtuálních sítí s následující konfigurací:

  • Název skupiny prostředků: Použijte stejný název skupiny prostředků, jako jste vytvořili virtuální sítě.
  • Typ clusteru: HBase
  • Verze: HBase 1.1.2 (HDI 3.6)
  • Umístění: Použijte stejné umístění jako virtuální síť. Ve výchozím nastavení je vnet1 USA – západ a virtuální síť 2 je USA – východ.
  • Úložiště: Vytvořte pro cluster nový účet úložiště.
  • Virtuální síť (z upřesňujícího nastavení na portálu): Vyberte virtuální síť vnet1, kterou jste vytvořili v posledním postupu.
  • Podsíť: Výchozí název použitý v šabloně je podsíť1.

Abyste měli jistotu, že je prostředí správně nakonfigurované, musíte být schopni otestovat plně kvalifikovaný název domény hlavního uzlu mezi těmito dvěma clustery.

Načtení testovacích dat

Při replikaci clusteru musíte zadat tabulky, které chcete replikovat. V této části načtete některá data do zdrojového clusteru. V další části povolíte replikaci mezi těmito dvěma clustery.

Pokud chcete vytvořit tabulku Kontakty a vložit do tabulky nějaká data, postupujte podle pokynů v kurzu Apache HBase: Začínáme používat Apache HBase ve službě HDInsight.

Poznámka:

Pokud chcete replikovat tabulky z vlastního oboru názvů, musíte zajistit, aby byly v cílovém clusteru definované i příslušné vlastní obory názvů.

Povolení replikace

Následující kroky popisují, jak volat skript akce skriptu z webu Azure Portal. Informace o spuštění akce skriptu pomocí Azure PowerShellu a Azure Classic CLI najdete v tématu Přizpůsobení clusterů HDInsight pomocí akce skriptu.

Povolení replikace HBase z webu Azure Portal

  1. Přihlaste se k portálu Azure.

  2. Otevřete zdrojový cluster HBase.

  3. V nabídce clusteru vyberte Akce skriptu.

  4. V horní části stránky vyberte Odeslat nový.

  5. Vyberte nebo zadejte následující informace:

    1. Název: Zadejte Povolit replikaci.
    2. Adresa URL skriptu Bash: Zadejte https://raw.githubusercontent.com/Azure/hbase-utils/master/replication/hdi_enable_replication.sh.
    3. Hlava: Ujistěte se, že je vybraný tento parametr. Vymažte ostatní typy uzlů.
    4. Parametry: Následující ukázkové parametry umožňují replikaci pro všechny existující tabulky a pak zkopírují všechna data ze zdrojového clusteru do cílového clusteru:

    -m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password> -copydata

    Poznámka:

    Jako název DNS zdrojového i cílového clusteru místo plně kvalifikovaného názvu domény použijte název hostitele.

    Tento názorný postup předpokládá, že hn1 je aktivní hlavní uzel. Zkontrolujte cluster a identifikujte aktivní hlavní uzel.

  6. Vyberte Vytvořit. Spuštění skriptu může chvíli trvat, zejména pokud používáte argument -copydata .

Požadované argumenty:

Název Popis
-s, --src-cluster Určuje název DNS zdrojového clusteru HBase. Příklad: -s hbsrccluster, --src-cluster=hbsrccluster
-d, --dst-cluster Určuje název DNS cílového clusteru (repliky) HBase. Příklad: -s dsthbcluster, --src-cluster=dsthbcluster
-sp, --src-ambari-password Určuje heslo správce pro Ambari ve zdrojovém clusteru HBase.
-dp, --dst-ambari-password Určuje heslo správce pro Ambari v cílovém clusteru HBase.

Volitelné argumenty:

Název Popis
-su, --src-ambari-user Určuje uživatelské jméno správce pro Ambari ve zdrojovém clusteru HBase. Výchozí hodnota je admin.
-du, --dst-ambari-user Určuje uživatelské jméno správce pro Ambari v cílovém clusteru HBase. Výchozí hodnota je admin.
-t, --table-list Určuje tabulky, které se mají replikovat. Příklad: --table-list="table1; tabulka2; tabulka3". Pokud nezadáte tabulky, replikují se všechny existující tabulky HBase.
-m, --machine Určuje hlavní uzel, na kterém se spouští akce skriptu. Hodnota by měla být zvolena na základě toho, který je aktivním hlavním uzlem. Tuto možnost použijte, když spouštíte skript $0 jako akci skriptu z portálu HDInsight nebo Azure PowerShellu.
-cp, -copydata Povolí migraci existujících dat v tabulkách, ve kterých je povolená replikace.
-rpm, -replik-phoenix-meta Umožňuje replikaci v systémových tabulkách Phoenixu.

Tuto možnost používejte s opatrností. Doporučujeme, abyste před použitím tohoto skriptu znovu vytvořili tabulky Phoenix v clusterech replik.
-h, --help Zobrazí informace o využití.

Část print_usage()skriptu obsahuje podrobné vysvětlení parametrů.

Po úspěšném nasazení akce skriptu můžete pomocí SSH připojit k cílovému clusteru HBase a ověřit, že se data replikovala.

Scénáře replikace

Následující seznam ukazuje některé obecné případy použití a jejich nastavení parametrů:

  • Povolte replikaci u všech tabulek mezi těmito dvěma clustery. Tento scénář nevyžaduje kopírování ani migraci existujících dat v tabulkách a nepoužívá phoenixové tabulky. Použijte následující parametry:

    -m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password>

  • Povolte replikaci u konkrétních tabulek. Pokud chcete povolit replikaci v tabulce 1, tabulce2 a tabulce3, použijte následující parametry:

    -m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password> -t "table1;table2;table3"

  • Povolte replikaci u konkrétních tabulek a zkopírujte existující data. Pokud chcete povolit replikaci v tabulce 1, tabulce2 a tabulce3, použijte následující parametry:

    -m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password> -t "table1;table2;table3" -copydata

  • Povolte replikaci u všech tabulek a replikujte phoenixová metadata ze zdroje do cíle. Replikace metadat Phoenixu není dokonalá. Používejte ho s opatrností. Použijte následující parametry:

    -m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password> -t "table1;table2;table3" -replicate-phoenix-meta

Nastavení replikace mezi clustery ESP

Požadavky

  1. Oba clustery ESP by měly být ve stejné sférě (doméně). Zkontrolujte /etc/krb5.conf výchozí vlastnost sféry souboru a potvrďte ji.
  2. Běžný uživatel by měl mít přístup ke čtení i zápisu do obou clusterů.
    1. Pokud například oba clustery mají stejného uživatele správce clusteru (například admin@abc.example.com), můžete ho použít ke spuštění skriptu replikace.
    2. Pokud oba clustery používají stejnou skupinu uživatelů, můžete přidat nového uživatele nebo použít existujícího uživatele ze skupiny.
    3. Pokud oba clustery používají jinou skupinu uživatelů, můžete přidat nového uživatele, aby oba používali existujícího uživatele ze skupin.

Postup spuštění skriptu replikace

Poznámka:

Následující kroky proveďte pouze v případě, že DNS nedokáže správně přeložit název hostitele cílového clusteru.

  1. Zkopírujte mapování IP adres a názvů hostitelů clusteru jímky ve zdrojovém uzlu clusteru /etc/hosts.
  2. Zkopírujte hlavní uzel, pracovní uzel a hostitele uzlů ZooKeeper a mapování IP adres ze souboru /etc/hosts cílového clusteru (jímky).
  3. Přidejte zkopírované položky zdrojového clusteru /etc/hosts. Tyto položky by měly být přidány do hlavních uzlů, pracovních uzlů a uzlů ZooKeeper.

Krok 1: Vytvoření souboru keytab pro uživatele pomocí ktutil. $ ktutil

  1. addent -password -p admin@ABC.EXAMPLE.COM -k 1 -e RC4-HMAC
  2. Požádejte o ověření hesla, zadejte uživatelské heslo.
  3. wkt /etc/security/keytabs/admin.keytab

Poznámka:

Ujistěte se, že je soubor klávesové zkratky uložený ve /etc/security/keytabs/ složce ve <username>.keytab formátu.

Krok 2: Spuštění akce skriptu s -ku možností

  1. Poskytovat -ku <username> v clusterech ESP.
Název Popis
-ku, --krb-user U clusterů ESP může běžný uživatel Kerberos, který může ověřovat zdrojové i cílové clustery.

Kopírování a migrace dat

Po povolení replikace jsou k dispozici dva samostatné skriptovací skripty pro kopírování nebo migraci dat:

Můžete postupovat stejným postupem, který je popsaný v části Povolit replikaci pro volání akce skriptu. Použijte následující parametry:

-m hn1 -t <table1:start_timestamp:end_timestamp;table2:start_timestamp:end_timestamp;...> -p <replication_peer> [-everythingTillNow]

Část print_usage()skriptu obsahuje podrobný popis parametrů.

Scénáře

  • Zkopírujte konkrétní tabulky (test1, test2 a test3) pro všechny řádky upravované až do teď (aktuální časové razítko):

    -m hn1 -t "test1::;test2::;test3::" -p "<zookeepername1>;<zookeepername2>;<zookeepername3>:2181:/hbase-unsecure" -everythingTillNow

    Nebo:

    -m hn1 -t "test1::;test2::;test3::" --replication-peer="<zookeepername1>;<zookeepername2>;<zookeepername3>:2181:/hbase-unsecure" -everythingTillNow

  • Kopírování konkrétních tabulek se zadaným časovým rozsahem:

    -m hn1 -t "table1:0:452256397;table2:14141444:452256397" -p "<zookeepername1>;<zookeepername2>;<zookeepername3>:2181:/hbase-unsecure"

Zákaz replikace

Pokud chcete replikaci zakázat, použijte jiný skript akce z GitHubu. Můžete postupovat stejným postupem, který je popsaný v části Povolit replikaci pro volání akce skriptu. Použijte následující parametry:

-m hn1 -s <source hbase cluster name> -sp <source cluster Ambari password> <-all|-t "table1;table2;...">

Část print_usage()skriptu obsahuje podrobné vysvětlení parametrů.

Scénáře

  • Zakažte replikaci u všech tabulek:

    -m hn1 -s <source hbase cluster name> -sp Mypassword\!789 -all

    nebo

    --src-cluster=<source hbase cluster name> --dst-cluster=<destination hbase cluster name> --src-ambari-user=<source cluster Ambari user name> --src-ambari-password=<source cluster Ambari password>

  • Zakažte replikaci u zadaných tabulek (tabulka1, tabulka2 a tabulka3):

    -m hn1 -s <source hbase cluster name> -sp <source cluster Ambari password> -t "table1;table2;table3"

Poznámka:

Pokud chcete cílový cluster odstranit, nezapomeňte ho odebrat ze seznamu partnerských uzlů zdrojového clusteru. Můžete to provést spuštěním příkazu remove_peer "1" v prostředí hbase ve zdrojovém clusteru. Selháním tohoto zdrojového clusteru nemusí správně fungovat.

Další kroky

V tomto článku jste zjistili, jak nastavit replikaci Apache HBase ve virtuální síti nebo mezi dvěma virtuálními sítěmi. Další informace o HDInsight a Apache HBase najdete v těchto článcích: