Konfigurera replikering av Apache HBase-kluster i virtuella Azure-nätverk
Lär dig hur du konfigurerar Apache HBase-replikering i ett virtuellt nätverk eller mellan två virtuella nätverk i Azure.
Klusterreplikering använder en käll-push-metod. Ett HBase-kluster kan vara en källa eller ett mål, eller så kan det uppfylla båda rollerna samtidigt. Replikeringen är asynkron. Målet med replikering är slutlig konsekvens. När källan får en redigering till en kolumnfamilj när replikeringen är aktiverad, sprids redigeringen till alla målkluster. När data replikeras från ett kluster till ett annat, källklustret och alla kluster som redan har förbrukat data som spåras, för att förhindra replikeringsloopar.
I den här artikeln konfigurerar du en källmålsreplikering. Andra klustertopologier finns i referensguiden för Apache HBase.
Följande är användningsfall för HBase-replikering för ett enda virtuellt nätverk:
- Belastningsutjämning. Du kan till exempel köra genomsökningar eller MapReduce-jobb i målklustret och mata in data i källklustret.
- Lägger till hög tillgänglighet.
- Migrera data från ett HBase-kluster till ett annat.
- Uppgradera ett Azure HDInsight-kluster från en version till en annan.
Följande är användningsfall för HBase-replikering för två virtuella nätverk:
- Konfigurera haveriberedskap.
- Belastningsutjämning och partitionering av programmet.
- Lägger till hög tillgänglighet.
Du kan replikera kluster med skriptåtgärdsskript från GitHub.
Förutsättningar
Innan du börjar den här artikeln måste du ha en Azure-prenumeration. Se Hämta en kostnadsfri utvärderingsversion av Azure.
Konfigurera miljöerna
Du har tre konfigurationsalternativ:
- Två Apache HBase-kluster i ett virtuellt Azure-nätverk.
- Två Apache HBase-kluster i två olika virtuella nätverk i samma region.
- Två Apache HBase-kluster i två olika virtuella nätverk i två olika regioner (geo-replikering).
Den här artikeln beskriver scenariot geo-replikering.
För att hjälpa dig att konfigurera miljöerna har vi skapat några Azure Resource Manager-mallar. Om du föredrar att konfigurera miljöer med hjälp av andra metoder kan du läsa:
Konfigurera två virtuella nätverk i två olika regioner
Om du vill använda en mall som skapar två virtuella nätverk i två olika regioner och VPN-anslutningen mellan de virtuella nätverken väljer du knappen Distribuera till Azure .
Några av de hårdkodade värdena i mallen:
VNet 1
Property | Värde |
---|---|
Plats | Västra USA |
VNet-namn | <ClusterNamePrevix-vnet1> |
Adressutrymmesprefix | 10.1.0.0/16 |
Namn på undernät | undernät 1 |
Prefix för undernät | 10.1.0.0/24 |
Undernätsnamn (gateway) | GatewaySubnet (kan inte ändras) |
Prefix för undernät (gateway) | 10.1.255.0/27 |
Gatewaynamn | vnet1gw |
Gateway-typ | Vpn |
Gateway-VPN-typ | Routningsbaserad |
Gateway-SKU | Grundläggande |
Gateway-IP | vnet1gwip |
VNet 2
Property | Värde |
---|---|
Plats | USA, östra |
VNet-namn | <ClusterNamePrevix-vnet2> |
Adressutrymmesprefix | 10.2.0.0/16 |
Namn på undernät | undernät 1 |
Prefix för undernät | 10.2.0.0/24 |
Undernätsnamn (gateway) | GatewaySubnet (kan inte ändras) |
Prefix för undernät (gateway) | 10.2.255.0/27 |
Gatewaynamn | vnet2gw |
Gateway-typ | Vpn |
Gateway-VPN-typ | Routningsbaserad |
Gateway-SKU | Grundläggande |
Gateway-IP | vnet1gwip |
Du kan också följa stegen nedan för att konfigurera två olika virtuella nätverk och virtuella datorer manuellt
- Skapa två virtuella nätverk (virtuellt nätverk) i olika regioner
- Aktivera peering i både det virtuella nätverket. Gå till Virtuellt nätverk som skapats i ovanstående steg och klicka sedan på peering och lägg till peeringlänk i en annan region. Gör det för både det virtuella nätverket.
- Skapa den senaste versionen av UBUNTU i varje VNET.
Konfigurera DNS
I det sista avsnittet skapar mallen en virtuell Ubuntu-dator i vart och ett av de två virtuella nätverken. I det här avsnittet installerar du Bind på de två virtuella DNS-datorerna och konfigurerar sedan DNS-vidarebefordran på de två virtuella datorerna.
För att installera Bind måste du hitta den offentliga IP-adressen för de två virtuella DNS-datorerna.
- Öppna Azure Portal.
- Öppna den virtuella DNS-datorn genom att välja Resursgrupper > [resursgruppsnamn] > [vnet1DNS]. Resursgruppens namn är det du skapade i den senaste proceduren. Standardnamnen för virtuella DNS-datorer är vnet1DNS och vnet2NDS.
- Välj Egenskaper för att öppna egenskapssidan för det virtuella nätverket.
- Skriv ned den offentliga IP-adressen och verifiera även den privata IP-adressen. Den privata IP-adressen ska vara 10.1.0.4 för vnet1DNS och 10.2.0.4 för vnet2DNS.
- Ändra DNS-servrarna för båda de virtuella nätverken så att standard-DNS-servrar (Azure-tillhandahållna) används för att tillåta inkommande och utgående åtkomst för att ladda ned paket för att installera Bindning i följande steg.
Om du vill installera Bind använder du följande procedur:
Använd SSH för att ansluta till den offentliga IP-adressen för den virtuella DNS-datorn. Följande exempel ansluter till en virtuell dator på 40.68.254.142:
ssh sshuser@40.68.254.142
Ersätt
sshuser
med det SSH-användarkonto som du angav när du skapade den virtuella DNS-datorn.Kommentar
Det finns en mängd olika sätt att hämta
ssh
verktyget. I Linux, Unix och macOS tillhandahålls det som en del av operativsystemet. Om du använder Windows bör du överväga något av följande alternativ:Om du vill installera Bind använder du följande kommandon från SSH-sessionen:
sudo apt-get update -y sudo apt-get install bind9 -y
Konfigurera Bind för att vidarebefordra namnmatchningsbegäranden till din lokala DNS-server. Om du vill göra det använder du följande text som innehållet i
/etc/bind/named.conf.options
filen: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; }; };
Viktigt!
Ersätt värdena i
goodclients
avsnittet med IP-adressintervallet för de två virtuella nätverken. I det här avsnittet definieras de adresser som DNS-servern accepterar begäranden från.Om du vill redigera den här filen använder du följande kommando:
sudo nano /etc/bind/named.conf.options
Om du vill spara filen använder du Ctrl+X, Y och sedan Retur.
Använd följande kommando från SSH-sessionen:
hostname -f
Det här kommandot returnerar ett värde som liknar följande text:
vnet1DNS.icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net
Texten
icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net
är DNS-suffixet för det här virtuella nätverket. Spara det här värdet eftersom det används senare.Du måste också ta reda på DNS-suffixet från den andra DNS-servern. Du behöver det i nästa steg.
Om du vill konfigurera Bind för att matcha DNS-namn för resurser i det virtuella nätverket använder du följande text som innehållet i
/etc/bind/named.conf.local
filen:// 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 };
Viktigt!
Du måste ersätta
v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net
med DNS-suffixet för det andra virtuella nätverket. Och vidarebefordrarens IP-adress är dns-serverns privata IP-adress i det andra virtuella nätverket.Om du vill redigera den här filen använder du följande kommando:
sudo nano /etc/bind/named.conf.local
Om du vill spara filen använder du Ctrl+X, Y och sedan Retur.
Använd följande kommando för att starta Bindning:
sudo service bind9 restart
Kontrollera att bindningen kan matcha namnen på resurser i det andra virtuella nätverket genom att använda följande kommandon:
sudo apt install dnsutils nslookup vnet2dns.v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net
Viktigt!
Ersätt
vnet2dns.v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net
med det fullständigt kvalificerade domännamnet (FQDN) för den virtuella DNS-datorn i det andra nätverket.Ersätt
10.2.0.4
med den interna IP-adressen för din anpassade DNS-server i det andra virtuella nätverket.Svaret ser ut ungefär som i följande text:
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
Hittills kan du inte söka efter IP-adressen från det andra nätverket utan angiven IP-adress för DNS-servern.
Konfigurera det virtuella nätverket så att det använder den anpassade DNS-servern
Använd följande steg för att konfigurera det virtuella nätverket att använda den anpassade DNS-servern i stället för den rekursiva Azure-matcharen:
I Azure Portal väljer du det virtuella nätverket och sedan DNS-servrar.
Välj Anpassad och ange den interna IP-adressen för den anpassade DNS-servern. Välj slutligen Spara.
Öppna den virtuella DNS-serverdatorn i vnet1 och klicka på Starta om. Du måste starta om alla virtuella datorer i det virtuella nätverket för att DNS-konfigurationen ska börja gälla.
Upprepa stegen för att konfigurera den anpassade DNS-servern för vnet2.
Om du vill testa DNS-konfigurationen kan du ansluta till de två virtuella DNS-datorerna med hjälp av SSH och pinga DNS-servern i det andra virtuella nätverket med hjälp av dess värdnamn. Om det inte fungerar använder du följande kommando för att kontrollera DNS-status:
sudo service bind9 status
Skapa Apache HBase-kluster
Skapa ett Apache HBase-kluster i vart och ett av de två virtuella nätverken med följande konfiguration:
- Resursgruppsnamn: Använd samma resursgruppsnamn som du skapade de virtuella nätverken.
- Klustertyp: HBase
- Version: HBase 1.1.2 (HDI 3.6)
- Plats: Använd samma plats som det virtuella nätverket. Som standard är vnet1 USA, västra och vnet2 är USA, östra.
- Lagring: Skapa ett nytt lagringskonto för klustret.
- Virtuellt nätverk (från Avancerade inställningar på portalen): Välj vnet1 som du skapade i den senaste proceduren.
- Undernät: Standardnamnet som används i mallen är undernät1.
För att säkerställa att miljön är korrekt konfigurerad måste du kunna pinga huvudnodens FQDN mellan de två klustren.
Läsa in testdata
När du replikerar ett kluster måste du ange de tabeller som du vill replikera. I det här avsnittet läser du in vissa data i källklustret. I nästa avsnitt aktiverar du replikering mellan de två klustren.
Om du vill skapa en kontakttabell och infoga data i tabellen följer du anvisningarna i Apache HBase-självstudien: Kom igång med Apache HBase i HDInsight.
Kommentar
Om du vill replikera tabeller från ett anpassat namnområde måste du även se till att lämpliga anpassade namnområden definieras i målklustret.
Aktivera replikering
Följande steg beskriver hur du anropar skriptåtgärdsskriptet från Azure Portal. Information om hur du kör en skriptåtgärd med hjälp av Azure PowerShell och klassiska Azure CLI finns i Anpassa HDInsight-kluster med hjälp av skriptåtgärd.
Aktivera HBase-replikering från Azure Portal
Logga in på Azure-portalen.
Öppna HBase-källklustret.
I klustermenyn väljer du Skriptåtgärder.
Längst upp på sidan väljer du Skicka ny.
Välj eller ange följande information:
- Namn: Ange Aktivera replikering.
- BASH-skript-URL: Ange https://raw.githubusercontent.com/Azure/hbase-utils/master/replication/hdi_enable_replication.sh.
- Huvud: Kontrollera att den här parametern är markerad. Rensa de andra nodtyperna.
- Parametrar: Följande exempelparametrar aktiverar replikering för alla befintliga tabeller och kopierar sedan alla data från källklustret till målklustret:
-m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password> -copydata
Kommentar
Använd värdnamn i stället för FQDN för både käll- och målklustrets DNS-namn.
Den här genomgången förutsätter hn1 som aktiv huvudnod. Kontrollera klustret för att identifiera den aktiva huvudnoden.
Välj Skapa. Skriptet kan ta en stund att köra, särskilt när du använder argumentet -copydata .
Obligatoriska argument:
Name | beskrivning |
---|---|
-s, --src-cluster | Anger DNS-namnet på HBase-källklustret. Till exempel: -s hbsrccluster, --src-cluster=hbsrccluster |
-d, --dst-cluster | Anger DNS-namnet på målklustret (repliken) HBase. Exempel: -s dsthbcluster, --src-cluster=dsthbcluster |
-sp, --src-ambari-password | Anger administratörslösenordet för Ambari i HBase-källklustret. |
-dp, --dst-ambari-password | Anger administratörslösenordet för Ambari i målets HBase-kluster. |
Valfria argument:
Name | beskrivning |
---|---|
-su, --src-ambari-user | Anger administratörsanvändarnamnet för Ambari i HBase-källklustret. Standardvärdet är admin. |
-du, --dst-ambari-user | Anger administratörsanvändarnamnet för Ambari i målets HBase-kluster. Standardvärdet är admin. |
-t, --table-list | Anger de tabeller som ska replikeras. Exempel: --table-list="table1; table2; table3". Om du inte anger tabeller replikeras alla befintliga HBase-tabeller. |
-m, --machine | Anger huvudnoden där skriptåtgärden körs. Värdet ska väljas baserat på vilken som är den aktiva huvudnoden. Använd det här alternativet när du kör skriptet $0 som en skriptåtgärd från HDInsight-portalen eller Azure PowerShell. |
-cp, -copydata | Möjliggör migrering av befintliga data i tabellerna där replikering är aktiverad. |
-rpm, -replicate-phoenix-meta | Aktiverar replikering på Phoenix-systemtabeller. Använd det här alternativet med försiktighet. Vi rekommenderar att du återskapar Phoenix-tabeller i replikkluster innan du använder det här skriptet. |
-h, --help | Visar användningsinformation. |
Avsnittet print_usage()
i skriptet har en detaljerad förklaring av parametrar.
När skriptåtgärden har distribuerats kan du använda SSH för att ansluta till målets HBase-kluster och sedan kontrollera att data har replikerats.
Replikeringsscenarier
I följande lista visas några allmänna användningsfall och deras parameterinställningar:
Aktivera replikering på alla tabeller mellan de två klustren. Det här scenariot kräver inte kopiering eller migrering av befintliga data i tabellerna och använder inte Phoenix-tabeller. Använd följande parametrar:
-m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password>
Aktivera replikering i specifika tabeller. Om du vill aktivera replikering i table1, table2 och table3 använder du följande parametrar:
-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"
Aktivera replikering i specifika tabeller och kopiera befintliga data. Om du vill aktivera replikering i table1, table2 och table3 använder du följande parametrar:
-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
Aktivera replikering på alla tabeller och replikera Phoenix-metadata från källa till mål. Phoenix metadatareplikering är inte perfekt. Använd den med försiktighet. Använd följande parametrar:
-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
Konfigurera replikering mellan ESP-kluster
Förutsättningar
- Båda ESP-klustren bör finnas där i samma sfär (domän). Kontrollera
/etc/krb5.conf
filens standardsfäregenskap för att bekräfta. - Vanliga användare bör vara där som har läs- och skrivåtkomst till båda klustren
- Om båda klustren till exempel har samma klusteradministratörsanvändare (till exempel
admin@abc.example.com
), kan den användaren användas för att köra replikeringsskriptet. - Om båda klustren använder samma användargrupp kan du lägga till en ny användare eller använda en befintlig användare från gruppen.
- Om båda klustren använder en annan användargrupp kan du lägga till en ny användare för att båda använda en befintlig användare från grupperna.
- Om båda klustren till exempel har samma klusteradministratörsanvändare (till exempel
Steg för att köra replikeringsskript
Kommentar
Utför endast följande steg om DNS inte kan matcha värdnamnet korrekt för målklustret.
- Kopiera mottagarkluster är värd för IP- och värdnamnsmappning i källklusternoder /etc/hosts-fil.
- Kopiera huvudnoden, arbetsnoden och ZooKeeper-nodernas värd och IP-mappning från /etc/hosts-filen för målklustret (mottagare).
- Lägg till kopierade poster källkluster /etc/hosts-fil. Dessa poster bör läggas till i huvudnoder, arbetsnoder och ZooKeeper-noder.
Steg 1: Skapa nyckelfliksfil för användaren med hjälp av ktutil
.
$ ktutil
addent -password -p admin@ABC.EXAMPLE.COM -k 1 -e RC4-HMAC
- Be om lösenord för att autentisera, ange användarlösenord
wkt /etc/security/keytabs/admin.keytab
Kommentar
Kontrollera att nyckelfliksfilen lagras i /etc/security/keytabs/
mappen i <username>.keytab
formatet .
Steg 2: Kör skriptåtgärd med -ku
alternativet
- Ange
-ku <username>
i ESP-kluster.
Name | beskrivning |
---|---|
-ku, --krb-user |
För ESP-kluster, Common Kerberos-användare, som kan autentisera både käll- och målkluster |
Kopiera och migrera data
Det finns två separata skript för att kopiera eller migrera data när replikeringen har aktiverats:
Skript för små tabeller (tabeller som är några gigabyte stora och den totala kopian förväntas slutföras på mindre än en timme)
Skript för stora tabeller (tabeller som förväntas ta längre tid än en timme att kopiera)
Du kan följa samma procedur som beskrivs i Aktivera replikering för att anropa skriptåtgärden. Använd följande parametrar:
-m hn1 -t <table1:start_timestamp:end_timestamp;table2:start_timestamp:end_timestamp;...> -p <replication_peer> [-everythingTillNow]
Avsnittet print_usage()
i skriptet innehåller en detaljerad beskrivning av parametrar.
Scenarier
Kopiera specifika tabeller (test1, test2 och test3) för alla rader som har redigerats fram till nu (aktuell tidsstämpel):
-m hn1 -t "test1::;test2::;test3::" -p "<zookeepername1>;<zookeepername2>;<zookeepername3>:2181:/hbase-unsecure" -everythingTillNow
Eller:
-m hn1 -t "test1::;test2::;test3::" --replication-peer="<zookeepername1>;<zookeepername2>;<zookeepername3>:2181:/hbase-unsecure" -everythingTillNow
Kopiera specifika tabeller med ett angivet tidsintervall:
-m hn1 -t "table1:0:452256397;table2:14141444:452256397" -p "<zookeepername1>;<zookeepername2>;<zookeepername3>:2181:/hbase-unsecure"
Inaktivera replikering
Om du vill inaktivera replikering använder du ett annat skriptåtgärdsskript från GitHub. Du kan följa samma procedur som beskrivs i Aktivera replikering för att anropa skriptåtgärden. Använd följande parametrar:
-m hn1 -s <source hbase cluster name> -sp <source cluster Ambari password> <-all|-t "table1;table2;...">
Avsnittet print_usage()
i skriptet har en detaljerad förklaring av parametrar.
Scenarier
Inaktivera replikering i alla tabeller:
-m hn1 -s <source hbase cluster name> -sp Mypassword\!789 -all
eller
--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>
Inaktivera replikering i angivna tabeller (table1, table2 och table3):
-m hn1 -s <source hbase cluster name> -sp <source cluster Ambari password> -t "table1;table2;table3"
Kommentar
Om du tänker ta bort målklustret måste du ta bort det från peer-listan i källklustret. Detta kan göras genom att köra kommandot remove_peer "1" i hbase-gränssnittet i källklustret. Om detta misslyckas kanske källklustret inte fungerar korrekt.
Nästa steg
I den här artikeln har du lärt dig hur du konfigurerar Apache HBase-replikering i ett virtuellt nätverk eller mellan två virtuella nätverk. Mer information om HDInsight och Apache HBase finns i följande artiklar: