AHBench est une suite de tests de référence développée par l'équipe Alibaba Cloud Lindorm. Elle intègre Yahoo! Cloud Serving Benchmark (YCSB) pour tester les performances des clusters Lindorm et HBase en un clic.
Une exécution complète du benchmark comprend six étapes :
Vérifiez les prérequis (connectivité réseau, liste d'autorisation, environnement d'exécution)
Téléchargez et extrayez AHBench
Configurez l'endpoint du cluster
Configurez les variables d'environnement
(Facultatif) Ajustez les paramètres de test
Exécutez une série de tests et analysez les résultats
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster Lindorm ou HBase à tester
-
Une instance Elastic Compute Service (ECS) située dans la même région et utilisant le même type de réseau que le cluster, afin d'exécuter le client de test de charge
Utilisez un VPC pour une meilleure sécurité réseau. Si les deux instances utilisent un VPC, elles doivent partager le même ID VPC. Placez l'instance ECS dans la même zone que le cluster pour réduire la latence réseau.
L'adresse IP de l'instance ECS ajoutée à la liste d'autorisation de l'instance Lindorm. Pour plus d'informations, consultez Configurer une liste d'autorisation.
Le système d'exploitation Linux, JDK 1.8 ou version ultérieure, et Python 2.7 installés sur l'instance ECS
Au moins 16 cœurs CPU dédiés sur l'instance ECS
N'exécutez pas AHBench sur un environnement de production. Les tests de charge peuvent surcharger le cluster testé.
Télécharger AHBench
Téléchargez AHBench v1.0.5, transférez-le sur l'instance ECS et extrayez l'archive.
Configurer l'endpoint du cluster
Ajoutez l'endpoint du cluster au fichier AHBench/conf/hbase-site.xml. Pour savoir comment trouver l'adresse de connexion Lindorm, consultez Développer des applications à l'aide de l'API Java HBase.
Ajoutez également la propriété suivante au fichier hbase-site.xml :
<property>
<name>hbase.client.connection.impl</name>
<value>org.apache.hadoop.hbase.client.AliHBaseUEClusterConnection</value>
</property>
Configurer les variables d'environnement
-
Ouvrez le fichier de configuration de l'environnement :
vi AHBench/conf/ahbench-env.properties -
Définissez
JAVA_HOMEsur le chemin d'installation du JDK. Ignorez cette étape si Java est déjà présent dans le PATH du système.JAVA_HOME=/usr/java/jdk1.8.0/ -
Définissez
HBASE_VERSIONpour qu'elle corresponde à la version HBase du cluster testé :1pour la version 1.x,2pour la version 2.x.HBASE_VERSION=2
Ajuster les paramètres de test (facultatif)
Modifiez le fichier AHBench/conf/ahbench-settings.properties pour personnaliser la compression, l'encodage, le nombre de threads, le volume de données et la taille des champs. Les valeurs par défaut conviennent à la plupart des cas.
| Paramètre | Valeur par défaut | Options | Notes |
|---|---|---|---|
ahbench.table.compression |
SNAPPY |
NONE, LZO, ZSTD, SNAPPY, GZ, LZ4 | Utilisez ZSTD pour Lindorm, car il offre de meilleurs taux de compression. Tous les systèmes ne prennent pas en charge toutes les options. |
ahbench.table.encoding |
DIFF |
NONE, DIFF, INDEX | Utilisez INDEX pour Lindorm. L'encodage INDEX n'est pas pris en charge par tous les systèmes. |
Le fichier de configuration contient des commentaires intégrés pour tous les autres paramètres.
AHBench utilise ahbenchtest-read et ahbenchtest-write comme noms de table de test. Ces tables sont supprimées et recréées lors de chaque exécution de test. Assurez-vous que ces noms de table peuvent être supprimés en toute sécurité dans votre cluster.
Exécuter un test
Chaque test comporte deux phases internes : une phase de chargement qui écrit les données de test dans le cluster, et une phase d'exécution qui effectue des opérations de lecture/écriture sur ces données. L'indicateur --skipload permet d'ignorer la phase de chargement ; utilisez-le uniquement lorsque le test précédent s'est terminé avec succès.
Test rapide
Tests portant sur 10 millions de lignes. Nécessite au moins 20 Go d'espace de stockage libre. La durée totale d'exécution est d'environ 40 minutes.
cd AHBench
./fast_test
Test complet
Tests portant sur 2 milliards de lignes. Nécessite au moins 2 To d'espace de stockage libre. La durée totale d'exécution est d'environ 25 heures.
cd AHBench
./full_test
Pour répéter le test complet sans réimporter les données, utilisez l'indicateur --skipload. Cela réduit la durée d'exécution à environ 3,5 heures.
cd AHBench
./full_test --skipload
ECS est un environnement virtualisé. Les résultats de performance pour un même type d'instance peuvent varier de 5 à 10 % entre les exécutions. Ce comportement est normal.
Analyser les résultats des tests
Une fois le test terminé, AHBench écrit les résultats dans un fichier CSV (Comma-Separated Values) situé dans le répertoire courant.
-
Recherchez le fichier CSV :
ls -ltr -
Consultez les résultats :
cat full_throughput.csv
Ouvrez le fichier CSV dans Excel ou Numbers pour comparer côte à côte plusieurs exécutions de test.
hadoop@nake-ahbench-for-c5 ~/AHBench $ ls -ltr
total 52
drwxr-xr-x 14 hadoop hadoop 4096 Sep 5 10:23 workloads/
-rw-r--r-- 1 hadoop hadoop 1421 Sep 5 10:23 README
-rw-r--r-- 1 hadoop hadoop 558 Sep 5 10:23 LICENSE
-rwxr-xr-x 1 hadoop hadoop 741 Sep 5 10:23 full_test*
-rwxr-xr-x 1 hadoop hadoop 963 Sep 5 10:23 fast_test*
drwxr-xr-x 5 hadoop hadoop 4096 Sep 5 10:23 tools/
drwxr-xr-x 2 hadoop hadoop 4096 Sep 5 10:31 conf/
drwxrwxr-x 2 hadoop hadoop 4096 Sep 5 10:37 tmp/
drwxr-xr-x 2 hadoop hadoop 4096 Sep 5 10:43 bin/
drwxr-xr-x 2 hadoop hadoop 4096 Sep 5 10:43 suite/
-rw-rw-r-- 1 hadoop hadoop 437 Sep 6 11:16 full_throughput.csv
-rw-rw-r-- 1 hadoop hadoop 408 Sep 6 11:16 full_spike_latency.csv
drwxrwxr-x 2 hadoop hadoop 4096 Sep 6 11:43 logs/
hadoop@nake-ahbench-for-c5 ~/AHBench $ cat full_throughput.csv
TestName,OperationType,Throughput(rows/s),AverageLatency(us),P95Latency(us),P99Latency(us),P999Latency(us)
full_throughput_single_read,READ,68901.0,2898.706728054881,9255.0,46559.0,108863.0
full_throughput_scan,SCAN,1247157.0,4004.8719123340397,18639.0,47167.0,71103.0
full_throughput_single_write,INSERT,195834.0,1016.75785602,1344.0,3009.0,13295.0
full_throughput_batch_write,BATCH,782735.0,12722.031288233438,20623.0,87743.0,116095.0
hadoop@nake-ahbench-for-c5 ~/AHBench $ cat full_spike_latency.csv
TestName,OperationType,Throughput(rows/s),AverageLatency(us),P95Latency(us),P99Latency(us),P999Latency(us)
full_spike_single_read,READ,4996.0,656.0502980620339,974.0,2335.0,51775.0
full_spike_scan,SCAN,249864.0,1390.0287474438796,2061.0,8035.0,16655.0
full_spike_single_write,INSERT,49971.0,582.7455317893222,664.0,1112.0,5943.0
full_spike_batch_write,BATCH,199871.0,2798.396296975711,2945.0,14951.0,96319.0
Dépannage
Si le test se termine par une erreur, vérifiez les points suivants :
La variable
JAVA_HOMEest correctement définie et Python 2.7 est installé.L'endpoint du cluster dans le fichier
hbase-site.xmlest correct.La variable
HBASE_VERSIONcorrespond à la version HBase réelle du cluster.Le cluster prend en charge l'algorithme de compression spécifié dans le fichier
ahbench-settings.properties.Le cluster est en cours d'exécution et accessible depuis l'instance ECS.