We hebben een reeks prestatiebenchmarktests uitgevoerd op een Isilon X410 cluster met behulp van de YCSB benchmarking suite en CDH 5.10.
De CAE POC lab-omgeving is geconfigureerd met 5x Isilon x410 knooppunten waarop OneFS 8.0.0.4 en later 8.0.1.1 NFS grote Block streaming benchmarks worden uitgevoerd moet 5x ~700 MB/s schrijfbewerkingen (3,5 GB/s) en 5x ~1 GB/s leesbewerkingen (5 GB/s) verwachten voor onze theoretische geaggregeerde maximumaantalken in een van deze tests.
De (9) computeknooppunten zijn Dell PowerEdge FC630 servers met CentOS 7.3.1611 die elk zijn geconfigureerd met 2 x 18C/36T-Intel Xeon® CPU E5-2697 v4 bij 2,30 GHz met 512 GB RAM. Lokale storage is 2xSSD in RAID 1 geformatteerd als XFS voor zowel besturingssysteem- als scratchruimte/morsbestanden.
Er waren ook drie extra edge-servers die werden gebruikt om de YCSB-belasting te stimuleren.
Het backend-netwerk tussen computeknooppunten en Isilon is 10 Gbps met Jumbo Frames ingesteld (MTU=9162) voor de NIC's en de switchpoorten.
De eerste reeks tests was het bepalen van de relevante parameters aan de HBASE-kant die van invloed waren op de algehele uitvoer. We hebben de YCSB-tool gebruikt om de belasting voor HBASE te genereren. Deze initiële test is uitgevoerd met behulp van één client (edge server) met behulp van de laadfase van YCSB en 40 miljoen rijen. Deze tabel is vóór elke uitvoering verwijderd.
ycsb load hbase10 -P workloads/workloada1 -p table='ycsb_40Mtable_nr' -p columnfamily=family -threads 256 -p recordcount=40000000
hbase.regionserver.maxlogs - Maximum aantal Write-Ahead Log (WAL)-bestanden. Deze waarde vermenigvuldigd met HDFS Block Size (dfs.blocksize) is de grootte van de WAL die moet worden vertegenwoordigd wanneer een server crasht. Deze waarde is omgekeerd evenredig aan de frequentie van doorspoeling naar de schijf.
hbase.wal.regiongrouping.numgroups - Wanneer u meerdere HDFS WAL gebruikt als de WALProvider, stelt u in hoeveel write-ahead-logs elke RegionServer moet worden uitgevoerd. Resulteert in dit aantal HDFS-pipelines. Schrijfbewerkingen voor een bepaalde regio gaan alleen naar één pipeline, waarbij de totale belasting van de RegionServer wordt verspreid.
Deze volgende test was om wat meer te experimenteren in het vinden van wat er op schaal gebeurt, dus heb ik een tabel met één miljard rijen gemaakt, die een goed uur duurde om te genereren, en vervolgens een YCSB-run uitgevoerd die 10 miljoen rijen bijwerkte met behulp van de 'workloada'-instellingen (50/50 lezen/schrijven). Dit werd uitgevoerd op één client en ik was ook op zoek naar de meeste doorvoer die ik kon genereren, dus heb ik dit uitgevoerd als een functie van het aantal YCSB-threads. Een andere opmerking was dat we Isilon hebben afgestemd en naar OneFS 8.0.1.1 zijn gegaan met prestatieaanpassingen voor de dataknooppuntservice. U kunt de stoten in prestaties zien in vergelijking met de vorige reeks uitvoeringen. Voor deze uitvoeren stellen we de hbase.regionserver.maxlogs = 256 in en de hbase.wal.regiongrouping.numgroups = 20
De volgende test was om te bepalen hoe de Isilon knooppunten (vijf van hen) het zouden doen ten opzichte van een ander aantal regioservers. Hetzelfde updatescript dat in de vorige test is uitgevoerd, is hier uitgevoerd. Een tabel met 1 miljard rijen en 10 miljoen rijen bijgewerkt met behulp van 'workloada' met één client- en YCSB-threads op 51, we hebben ook dezelfde instelling behouden op de maxlogs en pipelines (respectievelijk 256 en 20).
De laatste serie tests komen uit die diepe donkere plaats waardoor u het systeem dat u test wilt breken. Het is immers een perfect geldige wetenschappelijke methode om een test uit te voeren totdat de dingen breken en te bellen, zodat u weet wat de bovengrens voor de geteste parameters is. In deze reeks tests had ik twee extra servers waarvan ik de client kon gebruiken. Daarnaast heb ik op elke client twee YCSB-clients uitgevoerd, waardoor ik maximaal zes clients kon opschalen die elk 512 threads aansturen, wat in het algemeen 4096 threads zou zijn. Ik ging terug en maakte twee verschillende tabellen één met 4 miljard rijen verdeeld in 600 regio's en één met 400 rijen voor 400 rijen verdeeld in 90 regio's.
Zoals u kunt zien, is de grootte van de tabel in deze test weinig van belang. Als u de Isilon heatdiagrammen opnieuw bekijkt, kunt u zien dat er een verschil is van een paar procent in het aantal bestandsbewerkingen dat meestal in lijn is met de verschillen van een tabel met vier miljard rijen tot 400 miljoen rijen.
HBase is een goede kandidaat voor het uitvoeren op Isilon, voornamelijk vanwege de scale-out naar scale-out architecturen. HBase doet veel van zijn eigen caching en splitst de tabel op in een groot aantal regio's die U HBase krijgt om uit te schalen met uw data. Met andere woorden, het doet goed werk om te zorgen voor zijn eigen behoeften en het bestandssysteem is er voor persistentie. We konden de belastingstests niet pushen om daadwerkelijk dingen te breken, maar als u naar vier miljard rijen in uw HBase-ontwerp kijkt en 800.000 bewerkingen verwacht met minder dan 3 ms latentie, ondersteunt deze architectuur dit. Als u merkt dat ik niet veel meer heb gezegd over een van de talloze tweaks aan de andere clientzijde die u op HBase zelf zou kunnen toepassen, zou ik verwachten dat al deze tweaks nog steeds geldig zijn en buiten het bereik van deze test vallen.