Tous les produits
Search
Centre de documentation

Lindorm:Méthodes de test

Dernière mise à jour :Aug 11, 2026

Ces tests comparatifs évaluent le débit, la latence des réponses et le taux de compression d’un cluster Apache HBase et d’un cluster Lindorm à l’aide de Yahoo Cloud Serving Benchmark (YCSB).

Déroulement du test :

  1. Créez des tables dans les deux clusters en utilisant le même schéma.

  2. Chargez 2 milliards de lignes de données avec YCSB.

  3. Exécutez des tests de débit pour quatre scénarios avec le même nombre de threads.

  4. Exécutez des tests de latence des réponses pour les mêmes quatre scénarios avec une cible OPS fixe.

  5. Exécutez des tests de taux de compression pour quatre combinaisons de colonnes et de tailles.

Créer des tables

Les deux clusters utilisent le même schéma de table avec 200 partitions pré-découpées basées sur les données YCSB.

Remarque

Pour savoir comment utiliser Lindorm Shell afin de créer des tables, consultez Utiliser Lindorm Shell pour se connecter à LindormTable.

Cluster Lindorm : utilise l’encodage INDEX (un algorithme exclusif à Lindorm activé en définissant DATA_BLOCK_ENCODING sur DIFF) et la compression Zstandard (ZSTD) :

create 'test', {NAME => 'f', DATA_BLOCK_ENCODING => 'DIFF', COMPRESSION => 'ZSTD'}, {SPLITS => (1..199).map{|i| "user#{(i * ((2**63-1)/199)).to_s.rjust(19, "0")}"} }

Cluster Apache HBase : utilise l’encodage DIFF et la compression SNAPPY, comme recommandé par Apache HBase :

create 'test', {NAME => 'f', DATA_BLOCK_ENCODING => 'DIFF', COMPRESSION => 'SNAPPY'}, {SPLITS => (1..199).map{|i| "user#{(i * ((2**63-1)/199)).to_s.rjust(19, "0")}"} }

Charger les données

Chaque table contient 2 milliards de lignes, avec 20 colonnes par ligne et 20 octets par colonne.

Profil YCSB :

recordcount=2000000000
operationcount=150000000
workload=com.yahoo.ycsb.workloads.CoreWorkload

readallfields=false
fieldcount=20
fieldlength=20

readproportion=1.0
updateproportion=0.0
scanproportion=0
insertproportion=0

requestdistribution=uniform

Exécutez la commande suivante pour charger les données :

bin/ycsb load hbase10 -P <workload> -p table=test -threads 200 -p columnfamily=f -s

Test de débit

Le test de débit exécute chaque scénario avec le même nombre de threads sur les deux clusters. Les quatre scénarios sont indépendants.

Tous les scénarios utilisent maxexecutiontime=1200 (exécution de 20 minutes). Pour les scénarios de lecture, effectuez une mise en chauffe de 20 minutes avant le test proprement dit. Déclenchez une compactation majeure et attendez sa fin avant de commencer.

Lecture d’une seule ligne

Simule une recherche ponctuelle à haute concurrence. Lit une ligne à la fois dans une plage de requête de 10 millions de lignes au sein de l’ensemble de données de 2 milliards de lignes. La plage de requête (recordcount=10000000) est inférieure au volume total de données afin de simuler un modèle de lecture de points chauds sur un volume de données réaliste.

Paramètre Valeur
Lignes dans l’ensemble de données 2 milliards
Plage de requête 10 millions de lignes
Colonnes par ligne 20
Taille de la colonne 20 octets
Threads 200
Mise en chauffe 20 minutes
Test proprement dit 20 minutes

Profil YCSB :

recordcount=10000000
operationcount=2000000000
workload=com.yahoo.ycsb.workloads.CoreWorkload

readallfields=false
fieldcount=20
fieldlength=20

readproportion=1.0
updateproportion=0.0
scanproportion=0
insertproportion=0

requestdistribution=uniform

Commande de test de charge :

bin/ycsb run hbase10 -P <workload> -p table=test -threads 200 -p columnfamily=f -p maxexecutiontime=1200

Analyse de plage

Simule des charges de travail d’analyse par lots. Lit 50 lignes consécutives par analyse dans une plage de requête de 10 millions de lignes.

Paramètre Valeur
Lignes dans l’ensemble de données 2 milliards
Plage de requête 10 millions de lignes
Colonnes par ligne 20
Taille de la colonne 20 octets
Lignes par analyse 50
Threads 100
Mise en chauffe 20 minutes
Test proprement dit 20 minutes

Profil YCSB :

recordcount=10000000
operationcount=2000000000
workload=com.yahoo.ycsb.workloads.CoreWorkload

readallfields=false
fieldcount=20
fieldlength=20

readproportion=0.0
updateproportion=0.0
scanproportion=1.0
insertproportion=0

requestdistribution=uniform
maxscanlength=50
Lindorm.usepagefilter=false

Commande de test de charge :

bin/ycsb run hbase10 -P <workload> -p table=test -threads 100 -p columnfamily=f -p maxexecutiontime=1200

Insertion d’une seule ligne

Simule des charges de travail d’écriture de lignes uniques à haute fréquence. Insère une colonne (20 octets) par opération.

Paramètre Valeur
Colonnes par insertion 1
Taille de la colonne 20 octets
Threads 200
Durée du test 20 minutes

Profil YCSB :

recordcount=2000000000
operationcount=100000000
workload=com.yahoo.ycsb.workloads.CoreWorkload

readallfields=false
fieldcount=1
fieldlength=20

readproportion=0.0
updateproportion=0.0
scanproportion=0
insertproportion=1.0

requestdistribution=uniform

Commande de test de charge :

bin/ycsb run hbase10 -P <workload> -p table=test -threads 200 -p columnfamily=f -p maxexecutiontime=1200

Insertion par lots

Simule des charges de travail d’écriture en masse. Insère une colonne (20 octets) par opération, par lots de 100 lignes.

Paramètre Valeur
Colonnes par insertion 1
Taille de la colonne 20 octets
Taille du lot 100 lignes
Threads 100
Durée du test 20 minutes

Profil YCSB :

recordcount=2000000000
operationcount=10000000
workload=com.yahoo.ycsb.workloads.CoreWorkload
fieldcount=1
fieldlength=20
cyclickey=true

readallfields=false
readproportion=0
updateproportion=0
scanproportion=0
insertproportion=0.0
batchproportion=1.0
batchsize=100

requestdistribution=uniform

Commande de test de charge :

bin/ycsb run hbase10 -P <workload> -p table=test -threads 100 -p columnfamily=f -p maxexecutiontime=1200

Test de latence des réponses

Le test de latence des réponses utilise les mêmes configurations de charge de travail que le test de débit, mais ajoute un indicateur -p target=<N> pour limiter les OPS à une valeur fixe. Cela maintient une charge identique sur les deux clusters, de sorte que les différences de latence reflètent les performances du cluster plutôt que les variations de charge.

Lecture d’une seule ligne

Paramètre Valeur
Plage de requête 10 millions de lignes
Colonnes par ligne 20
Taille de la colonne 20 octets
Threads 200
OPS max 5 000
Mise en chauffe 20 minutes
Test proprement dit 20 minutes

Profil YCSB : identique au test de débit de lecture d’une seule ligne.

Commande de test de charge :

bin/ycsb run hbase10 -P <workload> -p table=test -threads 200 -p columnfamily=f -p maxexecutiontime=1200 -p target=5000

Analyse de plage

Paramètre Valeur
Plage de requête 10 millions de lignes
Lignes par analyse 50
Threads 100
OPS max 5 000
Mise en chauffe 20 minutes
Test proprement dit 20 minutes

Profil YCSB : identique au test de débit d’analyse de plage.

Commande de test de charge :

bin/ycsb run hbase10 -P <workload> -p table=test -threads 100 -p columnfamily=f -p maxexecutiontime=1200 -p target=5000

Insertion d’une seule ligne

Paramètre Valeur
Colonnes par insertion 1
Taille de la colonne 20 octets
Threads 200
OPS max 50 000
Durée du test 20 minutes

Profil YCSB : identique au test de débit d’insertion d’une seule ligne.

Commande de test de charge :

bin/ycsb run hbase10 -P <workload> -p table=testwrite -threads 200 -p columnfamily=f -p maxexecutiontime=1200 -p target=50000

Insertion par lots

Paramètre Valeur
Colonnes par insertion 1
Taille de la colonne 20 octets
Taille du lot 100 lignes
Threads 100
OPS max 2 000
Durée du test 20 minutes

Profil YCSB : identique au test de débit d’insertion par lots.

Commande de test de charge :

bin/ycsb run hbase10 -P <workload> -p table=testwrite -threads 100 -p columnfamily=f -p maxexecutiontime=1200 -p target=2000

Test de taux de compression

Chaque test de taux de compression charge 5 millions de lignes dans les deux clusters, puis déclenche un vidage et une compactation majeure. Une fois la compactation terminée, comparez la taille de la table sur le disque entre les deux clusters.

Exécutez cette procédure pour chacune des configurations de colonnes suivantes :

Colonnes par ligne Taille de la colonne (octets)
1 10
20 10
20 20
100 10

Profil YCSB (remplacez <fieldcount> et <fieldlength> par les valeurs du tableau ci-dessus) :

recordcount=5000000
operationcount=150000000
workload=com.yahoo.ycsb.workloads.CoreWorkload

readallfields=false
fieldcount=<fieldcount>
fieldlength=<fieldlength>

readproportion=1.0

requestdistribution=uniform

Commande de chargement des données :

bin/ycsb load hbase10 -P <workload> -p table=test -threads 200 -p columnfamily=f -s

Après le chargement, déclenchez manuellement un vidage et une compactation majeure, puis vérifiez la taille de la table dans les deux clusters.