Provádění srovnávacích testů v HBase

Dokončeno

Yahoo! Cloud Serving Benchmark (YCSB) je opensourcová specifikace a programová sada pro vyhodnocení relativního výkonu systémů pro správu databází NoSQL. V tomto cvičení spustíte srovnávací test na výkon dvou clusterů HBase, z nichž jedna využívá akcelerovanou funkci zápisu. Vaším úkolem je porozumět rozdílům mezi výkonem mezi těmito dvěma možnostmi. Požadavky na cvičení

Pokud chcete provést kroky v cvičení, ujistěte se, že máte následující:

  • Předplatné Azure s autorizací pro vytvoření clusteru HDInsight HBase
  • Přístup k klientovi SSH, jako je Putty(Windows) /Terminal(Mac book)

Zřízení clusteru HDInsight HBase pomocí portálu pro správu Azure

Pokud chcete zřídit HDInsight HBase s novým prostředím na portálu pro správu Azure, proveďte následující kroky.

  1. Přejděte na Azure Portal. Přihlaste se pomocí přihlašovacích údajů účtu Azure.

    Logging into the Azure Portal.

  2. Začneme vytvořením účtu služby Premium Block Blob Storage. Na nové stránce klikněte na účet úložiště.

    Create a storage account in the Azure Portal.

  3. Na stránce Vytvořit účet úložiště vyplňte následující pole.

    • Předplatné: Mělo by být automaticky vyplněno podrobnostmi o předplatném.

    • Skupina prostředků: Zadejte skupinu prostředků pro uchovávání nasazení HBase služby HDInsight.

    • Název účtu úložiště: Zadejte název účtu úložiště pro použití v clusteru Premium.

    • Oblast: Zadejte název oblasti nasazení (ujistěte se, že cluster a účet úložiště jsou ve stejné oblasti).

    • Výkon: Premium

    • Druh účtu: BlockBlobStorage

    • Replikace: Místně redundantní úložiště (LRS)

    • Přihlašovací jméno clusteru: Zadejte uživatelské jméno pro správce clusteru(default:admin)

      Create storage account screen in the Azure Portal.

  4. Ve výchozím nastavení ponechte všechny ostatní karty a kliknutím na Zkontrolovat a vytvořit vytvořte účet úložiště.

  5. Po vytvoření účtu úložiště klikněte na přístupové klíče vlevo a zkopírujte klíč1. Tuto funkci použijeme později v procesu vytváření clusteru.

    Storage account Access Keys in the Azure Portal.

  6. Teď začneme nasazovat cluster HDInsight HBase s akcelerovanými zápisy. Výběr možnosti Vytvořit prostředek –> Analýza –> HDInsight

    Screenshot shows Azure H D insight highlighted in Analytics in the Azure Marketplace.

  7. Na kartě Základy vyplňte následující pole směrem k vytvoření clusteru HBase.

    • Předplatné: Mělo by být automaticky vyplněno podrobnostmi o předplatném.

    • Skupina prostředků: Zadejte skupinu prostředků pro uchovávání nasazení HBase služby HDInsight.

    • Název clusteru: Zadejte název clusteru. Pokud je název clusteru dostupný, zobrazí se zelené zaškrtnutí.

    • Oblast: Zadejte název oblasti nasazení.

    • Typ clusteru: Typ clusteru – HBase. Verze – HBase 2.0.0(HDI 4.0)

    • Přihlašovací jméno clusteru: Zadejte uživatelské jméno pro správce clusteru(default:admin)

    • Heslo pro přihlášení ke clusteru: Zadejte heslo pro přihlášení ke clusteru (default:sshuser)

    • Potvrzení hesla pro přihlášení ke clusteru: Potvrďte heslo zadané v posledním kroku.

    • Uživatelské jméno Secure Shell(SSH): Zadejte uživatele přihlášení SSH (default:sshuser).

    • Pro SSH použijte heslo pro přihlášení ke clusteru: Zaškrtněte políčko, pokud chcete použít stejné heslo pro přihlášení SSH i pro přihlášení Ambari atd.

      Define Azure HDInsight settings in the Azure Portal.

  8. Kliknutím na Tlačítko Další:Úložiště spusťte kartu Úložiště a vyplňte následující pole.

    • Primární typ úložiště: Azure Storage.

    • Metoda výběru: Zvolte přepínač Použít přístupový klíč

    • Název účtu úložiště: Zadejte název účtu služby Blob Storage úrovně Premium, který jste vytvořili dříve.

    • Přístupový klíč: Zadejte přístupový klíč key1, který jste zkopírovali dříve.

    • Kontejner: HDInsight by měl navrhnout výchozí název kontejneru. Můžete zvolit tento název nebo vytvořit vlastní název.

      Define Storage settings for Azure HDInsight in the Azure Portal.

  9. Zbývající možnosti ponechte nedotčené a posuňte se dolů a zaškrtněte políčko Povolit akcelerované zápisy HBase. (Všimněte si, že později vytvoříme druhý cluster bez akcelerovaných zápisů pomocí stejných kroků, ale toto políčko není zaškrtnuté.)

    Enable HBase accelerated writes in Azure HDInsight in the Azure Portal.

  10. V okně Zabezpečení a sítě ponechte výchozí nastavení beze změn a přejděte na kartu Konfigurace a ceny .

  11. Na kartě Konfigurace a ceny si všimněte, že oddíl Konfigurace uzlu teď obsahuje řádek Položka s názvem Disky Premium na pracovní uzel.

  12. Zvolte uzel Oblast na 10 a velikost uzlu na DS14v2 (mohli byste zvolit menší počet virtuálních počítačů a menší skladovou položku virtuálního počítače, ale ujistěte se, že oba clustery mají stejný počet uzlů a skladové položky virtuálního počítače, abyste zajistili paritu ve srovnání).

    Configuring nodes in Azure HDInsight in the Azure Portal.

  13. Klikněte na Další: Zkontrolovat a vytvořit

  14. Na kartě Revize a vytvoření se ujistěte, že je v části Úložiště povolené akcelerované zápisy HBase.

    Azure HDInsight validation in the Azure Portal.

  15. Kliknutím na Vytvořit zahájíte nasazení prvního clusteru s akcelerovanými zápisy.

  16. Stejným postupem znovu vytvořte druhý cluster HDInsight HBase, tentokrát bez akcelerovaných zápisů. Všimněte si následujících změn.

    • Použití normálního účtu úložiště objektů blob, který se ve výchozím nastavení doporučuje

    • Zaškrtněte políčko Povolit akcelerované zápisy na kartě Úložiště.

      Screenshot shows Enable Accelerated Writes checkbox unchecked, in the Create H D Insight cluster page.

  17. Na kartě Konfigurace a ceny pro tento cluster si všimněte, že oddíl Konfigurace uzlu neobsahuje řádkovou položku disku Premium na pracovní uzel .

  18. Zvolte uzel oblasti na 10 a velikost uzlu na D14v2.( Všimněte si také nedostatku typů virtuálních počítačů řady DS jako dříve). (Můžete zvolit menší počet virtuálních počítačů a menší skladovou položku virtuálního počítače, ale zajistit, aby oba clustery měly stejný počet uzlů a skladovou položku virtuálního počítače, aby se zajistilo porovnání parity).

    Configure nodes on Azure HDInsight in the Azure Portal.

  19. Kliknutím na Vytvořit zahájíte nasazení druhého clusteru bez akcelerovaných zápisů.

  20. Teď, když jsme dokončili nasazení clusteru, v další části bychom nastavili a spustili testy YCSB na obou těchto clusterech.

Spouštění testů YCSB

  1. Přihlášení k prostředí HDInsight

    • Postup nastavení a spuštění testů YCSB v obou clusterech je stejný.

    • Na stránce clusteru na webu Azure Portal přejděte do protokolu SSH a clusteru a pomocí názvu hostitele a cesty SSH se připojte ke clusteru. Cesta by měla mít následující formát.

    • ssh <sshuser>@<clustername.azurehdinsight.net>

      Connecting to the Azure HDInsight cluster in the Azure Portal.

  2. Vytvoření tabulky

    • Spuštěním následujících kroků vytvořte tabulky HBase, které se použijí k načtení datových sad.

    • Spusťte prostředí HBase a nastavte parametr pro počet rozdělení tabulek. Nastavení rozdělení tabulky (10 * Počet serverů oblastí)

    • Vytvoření tabulky HBase, která by se použila ke spuštění testů

    • Ukončení prostředí HBase

        hbase(main):018:0> n_splits = 100
        hbase(main):019:0> create 'usertable', 'cf', {SPLITS => (1..n_splits).map {|i| "user#{1000+i*(9999-1000)/n_splits}"}}
        hbase(main):020:0> exit
      
  3. Stažení úložiště YSCB

    • Stáhněte si úložiště YCSB z následujícího cíle.

        $ curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-0.17.0.tar.gz 
      
    • Rozbalte složku pro přístup k obsahu.

        $ tar xfvz ycsb-0.17.0.tar.gz 
      
    • Tím se vytvoří složka ycsb-0.17.0. Přesunout do této složky

  4. Spuštění náročné úlohy zápisu v obou clusterech

    • Spuštění náročného zápisu s následujícími parametry pomocí následujícího příkazu

      • úlohy/ úloha : Označuje, že je potřeba spustit úlohu nebo úlohu připojení.

      • table: Vyplňte název tabulky HBase, kterou jste vytvořili dříve.

      • columnfamily: Naplňte hodnotu názvu HBase columfamily z tabulky, kterou jste vytvořili.

      • recordcount: Number of records to inserted( we use 1 Million)

      • threadcount: Počet vláken( to může být různá, ale musí být udržována konstantní napříč experimenty)

      • -cp /etc/hbase/conf: Ukazatel na nastavení konfigurace HBase

      • -s | tee -a: Zadejte název souboru pro zápis výstupu.

          bin/ycsb load hbase12 -P workloads/workloada -p table=usertable -p columnfamily=cf -p recordcount=1000000 -p threadcount=4 -cp /etc/hbase/conf -s | tee -a workloada.dat
        
    • Spuštěním náročné úlohy zápisu načtěte do dříve vytvořené tabulky HBase 1 milion řádků.

    Poznámka:

    Upozornění, která se můžou zobrazit po odeslání příkazu, ignorujte.

Příklady výsledků pro HDInsight HBase s akcelerovanými zápisy

  1. Spusťte následující příkaz:

     ```CMD
     $ bin/ycsb load hbase12 -P workloads/workloada -p table=usertable -p columnfamily=cf -p recordcount=1000000 -p threadcount=4 -cp /etc/hbase/conf -s | tee -a workloada.dat 
     ```
    
  2. Přečtěte si výsledky:

     ```CMD
     2020-01-10 16:21:40:213 10 sec: 15451 operations; 1545.1 current ops/sec; est completion in 10 minutes [INSERT: Count=15452, Max=120319, Min=1249, Avg=2312.21, 90=2625, 99=7915, 99.9=19551, 99.99=113855]
     2020-01-10 16:21:50:213 20 sec: 34012 operations; 1856.1 current ops/sec; est completion in 9 minutes [INSERT: Count=18560, Max=305663, Min=1230, Avg=2146.57, 90=2341, 99=5975, 99.9=11151, 99.99=296703]
     ....
     2020-01-10 16:30:10:213 520 sec: 972048 operations; 1866.7 current ops/sec; est completion in 15 seconds [INSERT: Count=18667, Max=91199, Min=1209, Avg=2140.52, 90=2469, 99=7091, 99.9=22591, 99.99=66239]
     2020-01-10 16:30:20:214 530 sec: 988005 operations; 1595.7 current ops/sec; est completion in 7 second [INSERT: Count=15957, Max=38847, Min=1257, Avg=2502.91, 90=3707, 99=8303, 99.9=21711, 99.99=38015]
     ...
     ...
     2020-01-11 00:22:06:192 564 sec: 1000000 operations; 1792.97 current ops/sec; [CLEANUP: Count=8, Max=80447, Min=5, Avg=10105.12, 90=268, 99=80447, 99.9=80447, 99.99=80447] [INSERT: Count=8512, Max=16639, Min=1200, Avg=2042.62, 90=2323, 99=6743, 99.9=11487, 99.99=16495]
     [OVERALL], RunTime(ms), 564748
     [OVERALL], Throughput(ops/sec), 1770.7012685303887
     [TOTAL_GCS_PS_Scavenge], Count, 871
     [TOTAL_GC_TIME_PS_Scavenge], Time(ms), 3116
     [TOTAL_GC_TIME_%_PS_Scavenge], Time(%), 0.5517505152740692
     [TOTAL_GCS_PS_MarkSweep], Count, 0
     [TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 0
     [TOTAL_GC_TIME_%_PS_MarkSweep], Time(%), 0.0
     [TOTAL_GCs], Count, 871
     [TOTAL_GC_TIME], Time(ms), 3116
     [TOTAL_GC_TIME_%], Time(%), 0.5517505152740692
     [CLEANUP], Operations, 8
     [CLEANUP], AverageLatency(us), 10105.125
     [CLEANUP], MinLatency(us), 5
     [CLEANUP], MaxLatency(us), 80447
     [CLEANUP], 95thPercentileLatency(us), 80447
     [CLEANUP], 99thPercentileLatency(us), 80447
     [INSERT], Operations, 1000000
     [INSERT], AverageLatency(us), 2248.752362
     [INSERT], MinLatency(us), 1120
     [INSERT], MaxLatency(us), 498687
     [INSERT], 95thPercentileLatency(us), 3623
     [INSERT], 99thPercentileLatency(us), 7375
     [INSERT], Return=OK, 1000000
     ```
    
  3. Prozkoumejte výsledek testu. Mezi příklady pozorování z výše uvedených výsledků patří:

    • Spuštění testu trvalo 538663(8,97 minut) milisekund.
    • Return=OK, 1000000 označuje, že všechny 1 miliony vstupů byly úspěšně zapsány, **
    • Propustnost zápisu byla při 1856 operacích za sekundu.
    • 95 % vkládání mělo latenci 3389 milisekund
    • Několik vložení trvalo déle , možná byly zablokovány servery oblastí kvůli vysokému zatížení.

Příklady výsledků pro HDInsight HBase bez akcelerovaných zápisů

  1. Spusťte následující příkaz:

     $ bin/ycsb load hbase12 -P workloads/workloada -p table=usertable -p columnfamily=cf -p recordcount=1000000 -p threadcount=4 -cp /etc/hbase/conf -s | tee -a workloada.dat 
    
  2. Přečtěte si výsledky:

     2020-01-10 23:58:20:475 2574 sec: 1000000 operations; 333.72 current ops/sec; [CLEANUP: Count=8, Max=79679, Min=4, Avg=9996.38, 90=239, 99=79679, 99.9  =79679, 99.99=79679] [INSERT: Count=1426, Max=39839, Min=6136, Avg=9289.47, 90=13071, 99=27535, 99.9=38655, 99.99=39839]
     [OVERALL], RunTime(ms), 2574273
     [OVERALL], Throughput(ops/sec), 388.45918828344935
     [TOTAL_GCS_PS_Scavenge], Count, 908
     [TOTAL_GC_TIME_PS_Scavenge], Time(ms), 3208
     [TOTAL_GC_TIME_%_PS_Scavenge], Time(%), 0.12461770760133055
     [TOTAL_GCS_PS_MarkSweep], Count, 0
     [TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 0
     [TOTAL_GC_TIME_%_PS_MarkSweep], Time(%), 0.0
     [TOTAL_GCs], Count, 908
     [TOTAL_GC_TIME], Time(ms), 3208
     [TOTAL_GC_TIME_%], Time(%), 0.12461770760133055
     [CLEANUP], Operations, 8
     [CLEANUP], AverageLatency(us), 9996.375
     [CLEANUP], MinLatency(us), 4
     [CLEANUP], MaxLatency(us), 79679
     [CLEANUP], 95thPercentileLatency(us), 79679
     [CLEANUP], 99thPercentileLatency(us), 79679
     [INSERT], Operations, 1000000
     [INSERT], AverageLatency(us), 10285.497832
     [INSERT], MinLatency(us), 5568
     [INSERT], MaxLatency(us), 1307647
     [INSERT], 95thPercentileLatency(us), 18751
     [INSERT], 99thPercentileLatency(us), 33759
     [INSERT], Return=OK, 1000000
    
  3. Porovnejte výsledky:

    Parametr Unit S akcelerovanými zápisy Bez akcelerovaných zápisů
    [OVERALL], RunTime(ms) Milisekundy 567478 2574273
    [OVERALL], Propustnost(ops/s) Operace/s 1770 388
    [INSERT], Operace # of Operations 1000000 1000000
    [INSERT], 95thPercentileLatency(us) Mikrosekundách 3623 18751
    [INSERT], 99thPercentileLatency(us) Mikrosekundách 7375 33759
    [INSERT], Return=OK Počet záznamů 1000000 1000000
  4. Mezi příklady pozorování, která lze provést z porovnání, patří:

    • [OVERALL], RunTime(ms) : Celková doba provádění v milisekundách
    • [OVERALL], Propustnost(operace/s) : Počet operací za sekundu napříč všemi vlákny
    • [INSERT], Operace: Celkový počet operací vložení s přidruženým průměrem, minem, maximem, 95. a 99. latencí percentilu níže
    • [INSERT], 95thPercentileLatency(us): 95 % operací INSERT má datový bod pod touto hodnotou.
    • [INSERT], 99thPercentileLatency(us): 99 % operací INSERT má datový bod pod touto hodnotou.
    • [INSERT], Return=OK: Záznam OK označuje, že všechny operace INSERT byly úspěšně úspěšné s počtem vedle počtu.
  5. Zvažte vyzkoušení řady dalších pracovních zatížení, abyste provedli porovnání. Příkladem může být:

    • Většinou čtení (95 % čtení a zápisu) : úlohab

      bin/ycsb run hbase12 -P workloads/workloadb -p table=usertable -p columnfamily=cf -p recordcount=1000000 -p operationcount=100000 -p threadcount=4 -cp /etc/hbase/conf -s | tee -a workloadb.dat
      
    • Jen pro čtení(100% čtení a zápis) : workloadc

      bin/ycsb run hbase12 -P workloads/workloadc -p table=usertable -p columnfamily=cf -p recordcount=1000000 -p operationcount=100000 -p threadcount=4 -cp /etc/hbase/conf -s | tee -a workloadc.dat