Provádění srovnávacích testů v HBase
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.
Přejděte na Azure Portal. Přihlaste se pomocí přihlašovacích údajů účtu Azure.
Začneme vytvořením účtu služby Premium Block Blob Storage. Na nové stránce klikněte na účet úložiště.
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)
Ve výchozím nastavení ponechte všechny ostatní karty a kliknutím na Zkontrolovat a vytvořit vytvořte účet úložiště.
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.
Teď začneme nasazovat cluster HDInsight HBase s akcelerovanými zápisy. Výběr možnosti Vytvořit prostředek –> Analýza –> HDInsight
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.
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.
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é.)
V okně Zabezpečení a sítě ponechte výchozí nastavení beze změn a přejděte na kartu Konfigurace a ceny .
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.
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í).
Klikněte na Další: Zkontrolovat a vytvořit
Na kartě Revize a vytvoření se ujistěte, že je v části Úložiště povolené akcelerované zápisy HBase.
Kliknutím na Vytvořit zahájíte nasazení prvního clusteru s akcelerovanými zápisy.
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ě.
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 .
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).
Kliknutím na Vytvořit zahájíte nasazení druhého clusteru bez akcelerovaných zápisů.
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
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>
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
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
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
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 ```
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 ```
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ů
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
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
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 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.
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