Benchmarking uitvoeren in HBase
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.
Ga naar de Azure-portal. Meld u aan met de referenties van uw Azure-account.
We beginnen met het maken van een Premium Blok Blob Storage-account. Klik op de nieuwe pagina op Opslagaccount.
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)
Laat alle andere tabbladen standaard staan en klik op Controleren en maken om het opslagaccount te maken.
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.
We gaan nu beginnen met het implementeren van een HDInsight HBase-cluster met versnelde schrijfbewerkingen. Selecteer Een resource maken -> Analytics -> HDInsight
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.
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.
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.)
Laat de blade Beveiliging en netwerken op de standaardinstellingen staan zonder wijzigingen en ga naar het tabblad Configuratie en prijzen.
Op het tabblad Configuratie en prijzen ziet u dat de sectie Knooppuntconfiguratie nu een regelitem bevat met de titel Premium-schijven per werkknooppunt.
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)
Klik op Volgende: Controleren en maken
Zorg er op het tabblad Controleren en maken voor dat HBase versnelde schrijfbewerkingen is ingeschakeld in de sectie Opslag .
Klik op Maken om het eerste cluster te implementeren met versnelde schrijfbewerkingen.
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.
Houd er op het tabblad Configuratie + prijzen voor dit cluster rekening mee dat de sectie Knooppuntconfiguratie geen Premium-schijven per werkknooppuntregelitem heeft.
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)
Klik op Maken om het tweede cluster te implementeren zonder versnelde schrijfbewerkingen.
Nu we klaar zijn met clusterimplementaties, gaan we in de volgende sectie YCSB-tests instellen en uitvoeren op beide clusters.
YCSB-tests uitvoeren
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>
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
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
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
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 ```
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 ```
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
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
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
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 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
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