Benchmarking uitvoeren in HBase

Voltooid

De Yahoo! Cloud Serving Benchmark (YCSB) is een opensource-specificatie en programmasuite voor het evalueren van relatieve prestaties van NoSQL-databasebeheersystemen. In deze oefening voert u de benchmark uit naar de prestaties van twee HBase-clusters waarvan één gebruikmaakt van de functie voor versnelde schrijfbewerkingen. Uw taak is om inzicht te hebben in de prestatieverschillen tussen de twee opties. Vereisten voor oefening

Als u de stappen in de oefening wilt uitvoeren, controleert u of u de onderstaande stappen hebt:

  • Azure-abonnement met autorisatie voor het maken van een HDInsight HBase-cluster.
  • Toegang tot een SSH-client zoals Putty(Windows) /Terminal (Mac book)

HDInsight HBase-cluster inrichten met Azure Management Portal

Voer de onderstaande stappen uit om HDInsight HBase in te richten met de nieuwe ervaring in Azure Management Portal.

  1. Ga naar de Azure-portal. Meld u aan met de referenties van uw Azure-account.

    Logging into the Azure Portal.

  2. We beginnen met het maken van een Premium Blok Blob Storage-account. Klik op de nieuwe pagina op Opslagaccount.

    Create a storage account in the Azure Portal.

  3. Vul op de pagina Opslagaccount maken de onderstaande velden in

    • Abonnement: moet automatisch worden ingevuld met de abonnementsgegevens

    • Resourcegroep: Voer een resourcegroep in voor het opslaan van uw HDInsight HBase-implementatie

    • Naam van opslagaccount: voer een naam in voor uw opslagaccount voor gebruik in het Premium-cluster.

    • Regio: Voer de naam in van de implementatieregio (zorg ervoor dat het cluster en het opslagaccount zich in dezelfde regio bevinden)

    • Prestaties: Premium

    • Soort account: BlockBlobStorage

    • Replicatie: Lokaal redundante opslag (LRS)

    • Gebruikersnaam voor clusterlogboek: voer de gebruikersnaam in voor de clusterbeheerder (standaard:admin)

      Create storage account screen in the Azure Portal.

  4. Laat alle andere tabbladen standaard staan en klik op Controleren en maken om het opslagaccount te maken.

  5. Nadat het opslagaccount is gemaakt, klikt u aan de linkerkant op Toegangssleutels en kopieert u sleutel1. We gebruiken dit later in het proces voor het maken van het cluster.

    Storage account Access Keys in the Azure Portal.

  6. We gaan nu beginnen met het implementeren van een HDInsight HBase-cluster met versnelde schrijfbewerkingen. Selecteer Een resource maken -> Analytics -> HDInsight

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

  7. Vul op het tabblad Basisbeginselen de onderstaande velden in voor het maken van een HBase-cluster.

    • Abonnement: moet automatisch worden ingevuld met de abonnementsgegevens

    • Resourcegroep: Voer een resourcegroep in voor het opslaan van uw HDInsight HBase-implementatie

    • Clusternaam: voer de clusternaam in. Er wordt een groen vinkje weergegeven als de clusternaam beschikbaar is.

    • Regio: Voer de naam in van de regio van de implementatie

    • Clustertype: Clustertype - HBase. Versie- HBase 2.0.0(HDI 4.0)

    • Gebruikersnaam voor clusterlogboek: voer de gebruikersnaam in voor de clusterbeheerder (standaard:admin)

    • Wachtwoord voor clusterlogboek: Voer een wachtwoord in voor clusteraanmelding (standaard:sshuser)

    • Bevestig het wachtwoord voor het aanmelden bij het cluster: bevestig het wachtwoord dat in de laatste stap is ingevoerd

    • Gebruikersnaam voor Secure Shell(SSH): Voer de SSH-aanmeldingsgebruiker in (standaard:sshuser)

    • Gebruik het wachtwoord voor clusterlogboek voor SSH: schakel het selectievakje in om hetzelfde wachtwoord te gebruiken voor zowel SSH-aanmeldingen als Ambari-aanmeldingen, enzovoort.

      Define Azure HDInsight settings in the Azure Portal.

  8. Klik op Volgende:Opslag om het tabblad Opslag te starten en de onderstaande velden in te vullen

    • Primair opslagtype: Azure Storage.

    • Selectiemethode: keuzerondje Kiezen Toegangssleutel gebruiken

    • Naam van opslagaccount: voer de naam in van het Premium Blok-blobopslagaccount dat u eerder hebt gemaakt

    • Toegangssleutel: voer de sleutel1-toegangssleutel in die u eerder hebt gekopieerd

    • Container: HDInsight moet een standaardcontainernaam voorstellen. U kunt dit kiezen of een eigen naam maken.

      Define Storage settings for Azure HDInsight in the Azure Portal.

  9. Laat de rest van de opties ongewijzigd en schuif omlaag om het selectievakje Versnelde schrijfbewerkingen voor HBase inschakelen in te schakelen. (Houd er rekening mee dat we later een tweede cluster zouden maken zonder versnelde schrijfbewerkingen met dezelfde stappen, maar met dit selectievakje uitgeschakeld.)

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

  10. Laat de blade Beveiliging en netwerken op de standaardinstellingen staan zonder wijzigingen en ga naar het tabblad Configuratie en prijzen.

  11. Op het tabblad Configuratie en prijzen ziet u dat de sectie Knooppuntconfiguratie nu een regelitem bevat met de titel Premium-schijven per werkknooppunt.

  12. Kies het regioknooppunt naar 10 en knooppuntgrootte naar DS14v2 (u kunt kleinere aantallen VM's en kleinere VM-SKU kiezen, maar zorg ervoor dat beide clusters identiek aantal knooppunten en VM-SKU hebben om pariteit in vergelijking te garanderen)

    Configuring nodes in Azure HDInsight in the Azure Portal.

  13. Klik op Volgende: Controleren en maken

  14. Zorg er op het tabblad Controleren en maken voor dat HBase versnelde schrijfbewerkingen is ingeschakeld in de sectie Opslag .

    Azure HDInsight validation in the Azure Portal.

  15. Klik op Maken om het eerste cluster te implementeren met versnelde schrijfbewerkingen.

  16. Herhaal dezelfde stappen opnieuw om een tweede HDInsight HBase-cluster te maken, deze keer zonder versnelde schrijfbewerkingen. Let op de onderstaande wijzigingen

    • Een normaal Blob Storage-account gebruiken dat standaard wordt aanbevolen

    • Houd het selectievakje Versnelde schrijfbewerkingen inschakelen uitgeschakeld op het tabblad Opslag.

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

  17. Houd er op het tabblad Configuratie + prijzen voor dit cluster rekening mee dat de sectie Knooppuntconfiguratie geen Premium-schijven per werkknooppuntregelitem heeft.

  18. Kies het regioknooppunt naar 10 en de knooppuntgrootte naar D14v2.( Let ook op het ontbreken van VM-typen uit de DS-serie, zoals eerder). (u kunt kleinere aantallen VM's en kleinere VM-SKU's kiezen, maar zorg ervoor dat beide clusters identiek aantal knooppunten en VM-SKU hebben om pariteit in vergelijking te garanderen)

    Configure nodes on Azure HDInsight in the Azure Portal.

  19. Klik op Maken om het tweede cluster te implementeren zonder versnelde schrijfbewerkingen.

  20. Nu we klaar zijn met clusterimplementaties, gaan we in de volgende sectie YCSB-tests instellen en uitvoeren op beide clusters.

YCSB-tests uitvoeren

  1. Aanmelden bij HDInsight-shell

    • Stappen voor het instellen en uitvoeren van YCSB-tests op beide clusters zijn identiek.

    • Navigeer op de clusterpagina in Azure Portal naar het aanmeldingslogboek van SSH + Cluster en gebruik het hostnaam- en SSH-pad om ssh in het cluster te plaatsen. Het pad moet de onderstaande indeling hebben.

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

      Connecting to the Azure HDInsight cluster in the Azure Portal.

  2. De tabel maken

    • Voer de onderstaande stappen uit om de HBase-tabellen te maken, die worden gebruikt om de gegevenssets te laden

    • Start de HBase Shell en stel een parameter in voor het aantal tabelsplitsingen. De tabelsplitsingen instellen (10 * Aantal regioservers)

    • Maak de HBase-tabel, die wordt gebruikt om de tests uit te voeren

    • De HBase-shell afsluiten

        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. De YSCB-opslagplaats downloaden

    • Download de YCSB-opslagplaats van de onderstaande bestemming

        $ curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-0.17.0.tar.gz 
      
    • Pak de map uit om toegang te krijgen tot de inhoud

        $ tar xfvz ycsb-0.17.0.tar.gz 
      
    • Hiermee maakt u een map ycsb-0.17.0. Naar deze map gaan

  4. Een schrijfintensieve workload uitvoeren in beide clusters

    • Gebruik de onderstaande opdracht om een zware schrijfworkload te starten met de onderstaande parameters

      • workloads/workloada : geeft aan dat de toevoegworkload/workloada moet worden uitgevoerd

      • tabel: Vul de naam van de HBase-tabel in die u eerder hebt gemaakt

      • columnfamily: Vul de waarde in van de naam van de HBase-columfamily uit de tabel die u hebt gemaakt

      • recordcount: aantal records dat moet worden ingevoegd( we gebruiken 1 miljoen)

      • threadcount: het aantal threads( dit kan variëren, maar moet constant worden gehouden in alle experimenten)

      • -cp /etc/hbase/conf: Pointer to HBase config settings

      • -s | tee -a: Geef een bestandsnaam op om uw uitvoer te schrijven.

          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
        
    • Voer de werkbelasting voor schrijfintensieve schrijfbewerkingen uit om 1 miljoen rijen in een eerder gemaakte HBase-tabel te laden.

    Notitie

    Negeer de waarschuwingen die u mogelijk ziet nadat u de opdracht hebt ingediend.

Voorbeeldresultaten voor HDInsight HBase met versnelde schrijfbewerkingen

  1. Voer de volgende opdracht uit:

     ```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. Lees de resultaten:

     ```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. Verken het resultaat van de test. Enkele voorbeeldobservaties uit de bovenstaande resultaten kunnen zijn:

    • De test duurde 538663(8,97 minuten) milliseconden om uit te voeren
    • Return=OK, 1000000 geeft aan dat alle 1 miljoen invoer is geschreven, **
    • Schrijfdoorvoer bedroeg 1856 bewerkingen per seconde
    • 95% van de invoegingen had een latentie van 3389 milliseconden
    • Enkele invoegingen hebben meer tijd geduurd, misschien zijn ze geblokkeerd door regioservers vanwege de hoge werkbelasting

Voorbeeldresultaten voor HDInsight HBase zonder versnelde schrijfbewerkingen

  1. Voer de volgende opdracht uit:

     $ 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. Lees de resultaten:

     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. Vergelijk de resultaten:

    Parameter Eenheid Met versnelde schrijfbewerkingen Zonder versnelde schrijfbewerkingen
    [OVERALL], RunTime(ms) Milliseconden 567478 2574273
    [OVERALL], doorvoer (ops/sec) Bewerkingen per seconde 1770 388
    [INSERT], Bewerkingen Aantal bewerkingen 1000000 1000000
    [INSERT], 95thPercentileLatency(us) Microseconden 3623 18751
    [INSERT], 99thPercentileLatency(us) Microseconden 7375 33759
    [INSERT], Return=OK Aantal records 1000000 1000000
  4. Enkele voorbeeldobservaties die kunnen worden gemaakt van de vergelijkingen zijn:

    • [OVERALL], RunTime(ms) : Totale uitvoeringstijd in milliseconden
    • [OVERALL], Doorvoer(ops/sec) : Aantal bewerkingen per seconde voor alle threads
    • [INSERT], Bewerkingen: Totaal aantal invoegbewerkingen, met het bijbehorende gemiddelde, min, max, 95e en 99e percentiellatentie hieronder
    • [INSERT], 95thPercentileLatency(us): 95% van de INSERT-bewerkingen heeft een gegevenspunt onder deze waarde
    • [INSERT], 99thPercentileLatency(us): 99% van de INSERT-bewerkingen heeft een gegevenspunt onder deze waarde
    • [INSERT], Return=OK: Record OK geeft aan dat alle INSERT-bewerkingen succesvol zijn met het aantal naast elkaar
  5. Overweeg om een reeks andere werkbelastingen uit te proberen om vergelijkingen te maken. Voorbeelden zijn:

    • Voornamelijk lezen(95% lezen en 5% schrijven): workloadb

      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
      
    • Alleen-lezen(100% lezen en 0% schrijven): 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