Sdílet prostřednictvím


Migrace Apache HBase na novou verzi a účet úložiště

Tento článek popisuje, jak aktualizovat cluster Apache HBase ve službě Azure HDInsight na novější verzi s jiným účtem Azure Storage.

Tento článek platí jenom v případě, že potřebujete pro zdrojové a cílové clustery používat různé účty úložiště. Pokud chcete upgradovat verze se stejným účtem úložiště pro zdrojové a cílové clustery, přečtěte si téma Migrace Apache HBase na novou verzi.

Výpadek při upgradu by měl být jen pár minut. Tento výpadek je způsoben postupem vyprázdnění všech dat v paměti a časem konfigurace a restartování služeb v novém clusteru. Výsledky se budou lišit v závislosti na počtu uzlů, množství dat a dalších proměnných.

Kontrola kompatibility Apache HBase

Před upgradem Apache HBase se ujistěte, že jsou verze HBase ve zdrojovém a cílovém clusteru kompatibilní. Projděte si matici kompatibility verzí HBase a poznámky k verzi v referenční příručce HBase a ujistěte se, že je vaše aplikace kompatibilní s novou verzí.

Tady je příklad matice kompatibility. Y označuje kompatibilitu a N označuje potenciální nekompatibilitu:

Typ kompatibility Hlavní verze Podverze Patch
Kompatibilita přenosu mezi klientem a serverem N Y Y
Kompatibilita serveru N Y Y
Kompatibilita formátu souborů N Y Y
Kompatibilita rozhraní API klienta N Y Y
Kompatibilita binárních souborů klienta N N Y
Omezená kompatibilita rozhraní API na straně serveru
Stable N Y Y
Vyvíjí N N Y
Nestabilní N N N
Kompatibilita závislostí N Y Y
Provozní kompatibilita N N Y

Poznámky k verzi HBase by měly popisovat případné nekompatibility. Otestujte aplikaci v clusteru s cílovou verzí SLUŽBY HDInsight a HBase.

Další informace o verzích a kompatibilitě SLUŽBY HDInsight najdete v tématu Verze Azure HDInsight.

Přehled migrace clusteru Apache HBase

Pokud chcete upgradovat a migrovat cluster Apache HBase v Azure HDInsight na nový účet úložiště, proveďte následující základní kroky. Podrobné pokyny najdete v podrobných krocích a příkazech.

Příprava zdrojového clusteru:

  1. Zastavte příjem dat.
  2. Vyprázdnění memstore dat
  3. Zastavte HBase z Ambari.
  4. Pro clustery s akcelerovanými zápisy zálohujte adresář WAL (Write Ahead Log).

Příprava cílového clusteru:

  1. Vytvořte cílový cluster.
  2. Zastavte HBase z Ambari.
  3. Vyčištění dat Zookeeperu
  4. Přepněte uživatele na HBase.

Dokončete migraci:

  1. Vyčistěte cílový systém souborů, migrujte data a odeberte /hbase/hbase.id.
  2. Vyčistěte a migrujte WAL.
  3. Spusťte všechny služby z cílového clusteru Ambari.
  4. Ověřte HBase.
  5. Odstraňte zdrojový cluster.

Podrobný postup a příkazy migrace

Pomocí těchto podrobných kroků a příkazů můžete migrovat cluster Apache HBase s novým účtem úložiště.

Příprava zdrojového clusteru

  1. Zastavte příjem dat do zdrojového clusteru HBase.

  2. Vyprázdněte zdrojový cluster HBase, který upgradujete.

    HBase zapisuje příchozí data do úložiště v paměti označovaného jako .memstore Jakmile memstore dosáhne určité velikosti, HBase ji vyprázdní na disk pro dlouhodobé úložiště v účtu úložiště clusteru. Odstranění zdrojového clusteru po upgradu odstraní také všechna data v souboru memstores. Pokud chcete zachovat data, před upgradem ručně vyprázdněte každou tabulku memstore na disk.

    Data můžete vyprázdnit memstore spuštěním skriptu flush_all_tables.sh z úložiště hbase-utils Na GitHubu.

    Data můžete také vyprázdnit memstore spuštěním následujícího příkazu prostředí HBase z clusteru HDInsight:

    hbase shell
    flush "<table-name>"
    
  3. Přihlaste se ke službě Apache Ambari ve zdrojovém clusteru pomocí https://<OLDCLUSTERNAME>.azurehdinsight.neta zastavte služby HBase.

  4. V potvrzovací výzvě zaškrtněte políčko a zapněte režim údržby pro HBase.

    Další informace o připojení a používání Ambari najdete v tématu Správa clusterů HDInsight pomocí webového uživatelského rozhraní Ambari.

  5. Pokud váš zdrojový cluster HBase nemá funkci Zrychlené zápisy , přeskočte tento krok. Pro zdrojové clustery HBase s akcelerovanými zápisy zálohujte adresář WAL v HDFS spuštěním následujících příkazů z relace SSH na libovolném uzlu Zookeeper zdrojového clusteru nebo pracovního uzlu.

    hdfs dfs -mkdir /hbase-wal-backup
    hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
    

Příprava cílového clusteru

  1. Na webu Azure Portal nastavte nový cílový cluster HDInsight, který používá jiný účet úložiště než váš zdrojový cluster.

  2. Přihlaste se k Apache Ambari v novém clusteru na adrese https://<NEWCLUSTERNAME>.azurehdinsight.neta zastavte služby HBase.

  3. Vyčistíte data Zookeeperu v cílovém clusteru spuštěním následujících příkazů v libovolném uzlu Zookeeper nebo pracovním uzlu:

    hbase zkcli
    rmr /hbase-unsecure
    quit
    
  4. Přepněte uživatele na HBase spuštěním sudo su hbasepříkazu .

Vyčištění a migrace systému souborů a WAL

V závislosti na vaší zdrojové verzi HDI a na tom, jestli zdrojové a cílové clustery mají akcelerované zápisy, spusťte následující příkazy. Cílový cluster je vždy HDI verze 4.0, protože HDI 3.6 je v základní podpoře a nedoporučuje se pro nové clustery.

Účet <container-endpoint-url> úložiště je https://<storageaccount>.blob.core.windows.net/<container-name>. Na konci adresy URL předejte token SAS pro účet úložiště.

  • Typ <container-fullpath> úložiště WASB je wasbs://<container-name>@<storageaccount>.blob.core.windows.net
  • Typ <container-fullpath> úložiště Azure Data Lake Storage Gen2 je abfs://<container-name>@<storageaccount>.dfs.core.windows.net.

Kopírování příkazů

Příkaz pro kopírování HDFS je hdfs dfs <copy properties starting with -D> -cp

Lepší hadoop distcp výkon při kopírování souborů, které nejsou v objektu blob stránky: hadoop distcp <copy properties starting with -D>

Pokud chcete předat klíč účtu úložiště, použijte:

  • -Dfs.azure.account.key.<storageaccount>.blob.core.windows.net='<storage account key>'
  • -Dfs.azure.account.keyprovider.<storageaccount>.blob.core.windows.net=org.apache.hadoop.fs.azure.SimpleKeyProvider

Nástroj AzCopy můžete také použít k lepšímu výkonu při kopírování datových souborů HBase.

  1. Spusťte příkaz AzCopy:

    azcopy cp "<source-container-endpoint-url>/hbase" "<target-container-endpoint-url>" --recursive
    
  2. Pokud je cílovým účtem úložiště Azure Blob Storage, proveďte tento krok po zkopírování. Pokud je cílovým účtem úložiště Data Lake Storage Gen2, tento krok přeskočte.

    Ovladač Hadoop WASB používá speciální 0 velkých objektů blob odpovídajících každému adresáři. AzCopy tyto soubory při kopírování přeskočí. Některé operace WASB tyto objekty blob používají, takže je musíte vytvořit v cílovém clusteru. Objekty blob vytvoříte spuštěním následujícího příkazu Hadoop z libovolného uzlu v cílovém clusteru:

    sudo -u hbase hadoop fs -chmod -R 0755 /hbase
    

AzCopy si můžete stáhnout z webu Začínáme s nástrojem AzCopy. Další informace o použití nástroje AzCopy najdete v tématu azcopy copy.

Zdrojový cluster je HDI 3.6 nebo HDI 4.0 s akcelerovanými zápisy a cílový cluster má akcelerované zápisy.

  1. Pokud chcete vyčistit systém souborů a migrovat data, spusťte následující příkazy:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. Odebrání hbase.id spuštěním příkazu hdfs dfs -rm /hbase/hbase.id

  3. Pokud chcete vyčistit a migrovat WAL, spusťte následující příkazy:

    hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal
    hdfs dfs -cp <source-container-fullpath>/hbase-wal-backup/hbasewal hdfs://<destination-cluster>/hbasewal
    

Zdrojový cluster je HDI 3.6 bez akcelerovaných zápisů a cílový cluster má akcelerované zápisy.

  1. Pokud chcete vyčistit systém souborů a migrovat data, spusťte následující příkazy:

    hdfs dfs -rm -r /hbase 
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase /
    hdfs dfs -rm -r /hbase/*WALs
    
  2. Odebrání hbase.id spuštěním příkazu hdfs dfs -rm /hbase/hbase.id

  3. Pokud chcete vyčistit a migrovat WAL, spusťte následující příkazy:

    hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal/*
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase/*WALs hdfs://<destination-cluster>/hbasewal
    

Zdrojový cluster je HDI 3.6 bez akcelerovaných zápisů a cílový cluster nemá akcelerované zápisy.

  1. Pokud chcete vyčistit systém souborů a migrovat data, spusťte následující příkazy:

    hdfs dfs -rm -r /hbase 
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase /
    hdfs dfs -rm -r /hbase/*WALs
    
  2. Odebrání hbase.id spuštěním příkazu hdfs dfs -rm /hbase/hbase.id

  3. Pokud chcete vyčistit a migrovat WAL, spusťte následující příkazy:

    hdfs dfs -rm -r /hbase-wals/*
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase/*WALs /hbase-wals
    

Zdrojový cluster je HDI 4.0 bez akcelerovaných zápisů a cílový cluster má akcelerované zápisy.

  1. Pokud chcete vyčistit systém souborů a migrovat data, spusťte následující příkazy:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. Odebrání hbase.id spuštěním příkazu hdfs dfs -rm /hbase/hbase.id

  3. Pokud chcete vyčistit a migrovat WAL, spusťte následující příkazy:

    hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals hdfs://<destination-cluster>/hbasewal
    

Zdrojový cluster je HDI 4.0 bez akcelerovaných zápisů a cílový cluster nemá akcelerované zápisy.

  1. Pokud chcete vyčistit systém souborů a migrovat data, spusťte následující příkazy:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. Odebrání hbase.id spuštěním příkazu hdfs dfs -rm /hbase/hbase.id

  3. Pokud chcete vyčistit a migrovat WAL, spusťte následující příkazy:

    hdfs dfs -rm -r /hbase-wals/*
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals /
    

Dokončení migrace

  1. V cílovém clusteru uložte změny a restartujte všechny požadované služby podle pokynů Ambari.

  2. Nasměrujte aplikaci na cílový cluster.

    Poznámka:

    Při upgradu se změní statický název DNS vaší aplikace. Místo pevného kódování tohoto názvu DNS můžete nakonfigurovat název CNAME v nastavení DNS vašeho názvu domény, které odkazuje na název clusteru. Další možností je použít konfigurační soubor pro vaši aplikaci, který můžete aktualizovat bez opětovného nasazení.

  3. Spusťte příjem dat.

  4. Ověřte konzistenci HBase a operace DML (Simple Data Definition Language) a DML (Data Manipulation Language).

  5. Pokud je cílový cluster uspokojivý, odstraňte zdrojový cluster.

Další kroky

Další informace o Apache HBase a upgradu clusterů HDInsight najdete v následujících článcích: