Utföra benchmarking i HBase

Slutförd

Yahoo! Cloud Serving Benchmark (YCSB) är en specifikation med öppen källkod och programpaket för att utvärdera relativa prestanda för NoSQL-databashanteringssystem. I den här övningen kör du benchmark-värdet för prestanda för två HBase-kluster, varav ett använder funktionen för accelererade skrivningar. Din uppgift är att förstå prestandaskillnaderna mellan de två alternativen. Förutsättningar för övning

Om du vill utföra stegen i övningen kontrollerar du att du har följande:

  • Azure-prenumeration med auktorisering för att skapa ett HDInsight HBase-kluster.
  • Åtkomst till en SSH-klient som Putty(Windows) /Terminal(Mac book)

Etablera HDInsight HBase-kluster med Azure Management Portal

Utför stegen nedan för att etablera HDInsight HBase med den nya upplevelsen på Azure Management Portal.

  1. Gå till Azure-portalen. Logga in med dina autentiseringsuppgifter för Azure-kontot.

    Logging into the Azure Portal.

  2. Vi börjar med att skapa ett Premium Block Blob Storage-konto. På sidan Ny klickar du på Lagringskonto.

    Create a storage account in the Azure Portal.

  3. På sidan Skapa lagringskonto fyller du i fälten nedan

    • Prenumeration: Ska fyllas i automatiskt med prenumerationsinformationen

    • Resursgrupp: Ange en resursgrupp för att lagra din HDInsight HBase-distribution

    • Lagringskontonamn: Ange ett namn för ditt lagringskonto för användning i Premium-klustret.

    • Region: Ange namnet på distributionsregionen (se till att klustret och lagringskontot finns i samma region)

    • Prestanda: Premium

    • Kontotyp: BlockBlobStorage

    • Replikering: Lokalt redundant lagring (LRS)

    • Användarnamn för klusterlogg: Ange användarnamn för klusteradministratör (standard:administratör)

      Create storage account screen in the Azure Portal.

  4. Lämna alla andra flikar som standard och klicka på Granska + skapa för att skapa lagringskontot.

  5. När lagringskontot har skapats klickar du på Åtkomstnycklar till vänster och kopierar key1. Vi skulle använda detta senare i processen för att skapa kluster.

    Storage account Access Keys in the Azure Portal.

  6. Nu ska vi börja distribuera ett HDInsight HBase-kluster med accelererade skrivningar. Välj Skapa en resurs –> Analys –> HDInsight

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

  7. På fliken Grundläggande fyller du i fälten nedan för att skapa ett HBase-kluster.

    • Prenumeration: Ska fyllas i automatiskt med prenumerationsinformationen

    • Resursgrupp: Ange en resursgrupp för att lagra din HDInsight HBase-distribution

    • Klusternamn: Ange klusternamnet. En grön bock visas om klusternamnet är tillgängligt.

    • Region: Ange namnet på distributionsregionen

    • Klustertyp: Klustertyp – HBase. Version – HBase 2.0.0(HDI 4.0)

    • Användarnamn för klusterlogg: Ange användarnamn för klusteradministratör (standard:administratör)

    • Klusterloggens lösenord: Ange lösenord för klusterinloggning (standard:sshuser)

    • Bekräfta klusterloggens lösenord: Bekräfta lösenordet som angavs i det senaste steget

    • Secure Shell(SSH)-användarnamn: Ange SSH-loggen i användaren (default:sshuser)

    • Använd klusterloggens lösenord för SSH: Markera kryssrutan om du vill använda samma lösenord för både SSH-inloggningar och Ambari-inloggningar osv.

      Define Azure HDInsight settings in the Azure Portal.

  8. Klicka på Nästa:Lagring för att starta fliken Lagring och fylla i fälten nedan

    • Primär lagringstyp: Azure Storage.

    • Markeringsmetod: Välj alternativknapp Använd åtkomstnyckel

    • Lagringskontonamn: Ange namnet på det Premium Block Blob Storage-konto som skapades tidigare

    • Åtkomstnyckel: Ange nyckel1-åtkomstnyckeln som du kopierade tidigare

    • Container: HDInsight bör föreslå ett standardcontainernamn. Du kan antingen välja det här eller skapa ett eget namn.

      Define Storage settings for Azure HDInsight in the Azure Portal.

  9. Lämna resten av alternativen orörda och rulla nedåt för att markera kryssrutan Aktivera HBase-accelererade skrivningar. (Observera att vi senare skulle skapa ett andra kluster utan accelererade skrivningar med samma steg, men med den här rutan avmarkerad.)

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

  10. Lämna bladet Säkerhet + Nätverk till standardinställningarna utan ändringar och gå till fliken Konfiguration + prissättning.

  11. På fliken Konfiguration + prissättning noterar du att avsnittet Nodkonfiguration nu har ett radobjekt med titeln Premium-diskar per arbetsnod.

  12. Välj noden Region till 10 och Nodstorlek till DS14v2 (du kan välja mindre antal virtuella datorer och mindre SKU för virtuella datorer, men se till att båda klustren har identiskt antal noder och VM SKU för att säkerställa paritet i jämförelse)

    Configuring nodes in Azure HDInsight in the Azure Portal.

  13. Klicka på Nästa: Granska + skapa

  14. På fliken Granska och skapa kontrollerar du att HBase-accelererade skrivningar är aktiverade under avsnittet Lagring .

    Azure HDInsight validation in the Azure Portal.

  15. Klicka på Skapa för att börja distribuera det första klustret med accelererade skrivningar.

  16. Upprepa samma steg igen för att skapa ett andra HDInsight HBase-kluster, den här gången utan accelererade skrivningar. Observera ändringarna nedan

    • Använd ett normalt bloblagringskonto som rekommenderas som standard

    • Behåll kryssrutan Aktivera accelererade skrivningar avmarkerad på fliken Lagring.

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

  17. Observera att nodkonfigurationsavsnittet INTE har premiumdiskar per arbetsnodradsobjekt på fliken Konfiguration + prissättning för det här klustret.

  18. Välj noden Region till 10 och Nodstorlek till D14v2.( Observera också bristen på typer av virtuella datorer i DS-serien som tidigare). (du kan välja ett mindre antal virtuella datorer och mindre SKU för virtuella datorer, men se till att båda klustren har identiskt antal noder och VM SKU för att säkerställa paritet i jämförelse)

    Configure nodes on Azure HDInsight in the Azure Portal.

  19. Klicka på Skapa för att börja distribuera det andra klustret utan accelererade skrivningar.

  20. Nu när vi är klara med klusterdistributioner skulle vi i nästa avsnitt konfigurera och köra YCSB-tester på båda dessa kluster.

Köra YCSB-tester

  1. Logga in på HDInsight-gränssnittet

    • Stegen för att konfigurera och köra YCSB-tester på båda klustren är identiska.

    • På klustersidan i Azure-portalen går du till SSH + Klusterloggen och använder värdnamnet och SSH-sökvägen för att ssh-in i klustret. Sökvägen bör ha formatet nedan.

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

      Connecting to the Azure HDInsight cluster in the Azure Portal.

  2. Skapa tabellen

    • Kör stegen nedan för att skapa HBase-tabellerna, som ska användas för att läsa in datauppsättningarna

    • Starta HBase Shell och ange en parameter för antalet tabelldelningar. Ange tabelldelningar (10 * antal regionservrar)

    • Skapa HBase-tabellen, som skulle användas för att köra testerna

    • Avsluta HBase-gränssnittet

        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. Ladda ned YSCB-lagringsplatsen

    • Ladda ned YCSB-lagringsplatsen från målet nedan

        $ curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-0.17.0.tar.gz 
      
    • Packa upp mappen för att komma åt innehållet

        $ tar xfvz ycsb-0.17.0.tar.gz 
      
    • Detta skulle skapa en ycsb-0.17.0-mapp. Flytta till den här mappen

  4. Köra en skrivintensiv arbetsbelastning i båda klustren

    • Använd kommandot nedan för att initiera en skrivintensiv arbetsbelastning med parametrarna nedan

      • arbetsbelastningar/arbetsbelastningar : Anger att tilläggsarbetsbelastningen/arbetsbelastningen måste köras

      • tabell: Fyll i namnet på din HBase-tabell som skapades tidigare

      • columnfamily: Fyll i värdet för HBase-columfamily-namnet från tabellen du skapade

      • recordcount: Antal poster som ska infogas( vi använder 1 miljon)

      • threadcount: Antal trådar( detta kan variera, men måste hållas konstant över experiment)

      • -cp /etc/hbase/conf: Pekare till HBase-konfigurationsinställningar

      • -s | tee -a: Ange ett filnamn för att skriva utdata.

          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
        
    • Kör den skrivintensiva arbetsbelastningen för att läsa in 1 miljon rader i en tidigare skapad HBase-tabell.

    Kommentar

    Ignorera de varningar som du kan se när du har skickat kommandot.

Exempelresultat för HDInsight HBase med accelererade skrivningar

  1. Kör följande kommando:

     ```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. Läs resultatet:

     ```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. Utforska resultatet av testet. Några exempelobservationer från resultaten ovan kan vara:

    • Testet tog 538663(8,97 minuter) millisekunder att köra
    • Return=OK, 1000000 anger att alla 1 miljon indata har skrivits, **
    • Skrivdataflödet var 1856 åtgärder per sekund
    • 95 % av skären hade en svarstid på 3389 millisekunder
    • Få infogningar tog mer tid , kanske blockerades de av regionsepar på grund av den höga arbetsbelastningen

Exempelresultat för HDInsight HBase utan accelererade skrivningar

  1. Kör följande kommando:

     $ 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. Läs resultatet:

     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. Jämför resultatet:

    Parameter Enhet Med accelererade skrivningar Utan accelererade skrivningar
    [OVERALL], RunTime(ms) Millisekunder 567478 2574273
    [OVERALL], Dataflöde(ops/sek) Åtgärder per sekund 1770 388
    [INSERT], åtgärder Antal åtgärder 1 000 000 1 000 000
    [INSERT], 95thPercentileLatency(us) Mikrosekunder 3623 18751
    [INSERT], 99thPercentileLatency(us) Mikrosekunder 7375 33759
    [INSERT], Return=OK Antal poster 1 000 000 1 000 000
  4. Några exempel på observationer som kan göras av jämförelserna är:

    • [OVERALL], RunTime(ms) : Total körningstid i millisekunder
    • [OVERALL], Throughput(ops/sec) : Antal åtgärder/sek i alla trådar
    • [INSERT], Åtgärder: Totalt antal infogningsåtgärder, med associerat medelvärde, min, max, 95:e och 99:e percentilens svarstider nedan
    • [INSERT], 95thPercentileLatency(us): 95 % av INSERT-åtgärderna har en datapunkt under det här värdet
    • [INSERT], 99thPercentileLatency(us): 99 % av INSERT-åtgärderna har en datapunkt under det här värdet
    • [INSERT], Return=OK: Post OK anger att alla INSERT-åtgärder lyckades med antalet tillsammans med
  5. Överväg att prova en rad andra arbetsbelastningar för att göra jämförelser. Exempel:

    • Mestadels läsning (95 % läsning och 5 % skrivning) : arbetsbelastningb

      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
      
    • Skrivskyddad(100 % läs- och 0 % skrivskyddad) : 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