Avantages, inconvénients et goulot d'étranglement des performances de HBase
⚡ Résumé intelligent
HBase est la base de données NoSQL distribuée et orientée colonnes construite sur Hadoop HDFSet il offre un accès en lecture et en écriture aléatoire en temps réel à des milliards de lignes, tout en présentant des compromis évidents en matière de requêtes, d'indexation et de coût matériel.
Qu'est-ce que HBase ?
HBase est une base de données NoSQL open source, distribuée et orientée colonnes, qui s'exécute sur le système de fichiers distribué Hadoop (HDFS). Elle est basée sur… Google Bigtable stocke les données dans des tables composées de lignes et de familles de colonnes, et il est conçu pour les ensembles de données épars pouvant atteindre des milliards de lignes et des millions de colonnes.
Contrairement à une base de données relationnelle, HBase n'utilise pas de schéma fixe ni d'optimiseur de requêtes. Chaque valeur est identifiée par une clé de ligne, une famille de colonnes, un qualificateur de colonne et un horodatage, ce qui permet des lectures et écritures aléatoires en temps réel rapides, même à très grande échelle.
Un cluster HBase repose sur quelques composants essentiels. Le HMaster coordonne le cluster et attribue les régions, les serveurs de régions stockent et servent les données, et Apache Gardien de zoo tracHBase permet de savoir quels serveurs sont opérationnels et facilite la reprise après incident. Intégré à l'écosystème Hadoop, il fonctionne avec des outils tels que… MapReduce, Rucheet Pig pour l'analyse par lots. Pour un aperçu plus détaillé du fonctionnement interne, consultez la documentation. Architecture HBase.
Avantages de HBase
Voici les principaux avantages de l'utilisation de HBase :
- Stocke de très grands ensembles de données sur HDFS et peut agréger et analyser des milliards de lignes contenues dans des tables HBase.
- La base de données peut être partagée entre de nombreux clients dans un environnement distribué.
- La lecture et le traitement des données prennent moins de temps qu'avec les modèles relationnels traditionnels.
- Prend en charge les opérations de lecture et d'écriture aléatoires rapides.
- HBase est largement utilisé pour les opérations analytiques en ligne.
- Dans les applications bancaires, telles que les mises à jour en temps réel des soldes des distributeurs automatiques de billets, HBase gère de manière fiable les lectures et les écritures à volume élevé.
Inconvénients de HBase
Voici les principales limitations de HBase :
- HBase ne remplace pas complètement les modèles relationnels traditionnels ; certaines fonctionnalités relationnelles ne sont pas prises en charge.
- HBase ne peut pas effectuer des fonctions comme SQLIl ne prend pas en charge la structure SQL, il ne possède donc pas d'optimiseur de requêtes.
- HBase est gourmand en ressources CPU et mémoire, avec des accès séquentiels importants en entrées/sorties, tandis que les tâches MapReduce sont principalement limitées par les E/S et utilisent une mémoire fixe. L'intégration de HBase avec des tâches MapReduce peut engendrer des latences imprévisibles.
- L'intégration de HBase avec les tâches Pig et Hive peut parfois entraîner des problèmes de mémoire sur le cluster.
- Dans un environnement de cluster partagé, la configuration nécessite moins d'emplacements de tâches par nœud à allouer aux besoins en processeur de HBase.
Goulots d'étranglement en matière de performances dans HBase
HBase offre une grande évolutivité, mais plusieurs choix architecturaux créent des goulots d'étranglement en matière de performances que les équipes doivent prendre en compte :
Dans un environnement de production de grande envergure, un cluster HBase peut s'étendre sur des milliers de nœuds, mais seul le HMaster fait office de maître pour tous les serveurs de région esclaves. Si le HMaster tombe en panne, la récupération peut être longue, même si les clients peuvent toujours accéder à un serveur de région. Il est possible de déployer un maître de secours, mais un seul HMaster est actif à la fois, et la promotion du second HMaster après une panne n'est pas instantanée. Par conséquent, le HMaster constitue un goulot d'étranglement reconnu en termes de performances.
HBase ne prend pas en charge directement les opérations de jointure entre tables. Les jointures peuvent être implémentées avec MapReduce, mais cela allonge considérablement le temps de conception et de développement, et certaines jointures de tables sont en pratique impraticables dans HBase.
La migration de données depuis un SGBDR externe vers HBase nécessite généralement la conception d'un nouveau schéma, et ce processus peut être long. Les requêtes sont également complexes : de nombreuses équipes ajoutent une couche SQL, telle qu'Apache Phoenix, à HBase pour pouvoir… lire et écrire des données avec des questions familières.
HBase ne prend en charge qu'un seul index (la clé de ligne faisant office de clé primaire), ce qui ralentit les recherches sur tout autre champ. Les équipes contournent ce problème en écrivant du code MapReduce ou en intégrant Apache. Solr et Apache Phoenix pour l'indexation secondaire.
- Les contrôles de sécurité pour l'accès aux données multi-utilisateurs ne se sont améliorés que lentement.
- HBase ne prend pas entièrement en charge les clés partielles.
- Un seul ordre de tri par défaut est autorisé par table.
- Stocker de gros fichiers binaires dans HBase est difficile.
- Le stockage HBase limite les requêtes et le tri en temps réel.
- Les recherches par clé et les recherches par plage sur le contenu des tables peuvent contraindre les requêtes qui doivent s'exécuter en temps réel.
- L'indexation par défaut est absente ; les programmeurs doivent écrire du code ou des scripts supplémentaires pour ajouter l'indexation.
- Les exigences matérielles et l'allocation des blocs de mémoire rendent l'exécution de HBase coûteuse.
- Un cluster distribué nécessite de nombreux serveurs : des nœuds distincts pour le NameNode, les DataNodes, ZooKeeper et les serveurs de région.
- Des machines à grande capacité de mémoire sont nécessaires pour de bonnes performances.
- Le coût global et la maintenance sont plus élevés que pour des solutions plus simples.
HBase vs SGBDR
L'article compare à plusieurs reprises HBase aux bases de données relationnelles traditionnelles. Le tableau ci-dessous résume les principales différences afin de vous aider à choisir le modèle le plus adapté à votre charge de travail :
| Fonctionnalité | HBase | RDBMS |
|---|---|---|
| Modèle de données | Base de données NoSQL orientée colonnes et à schéma flexible | Tables orientées lignes avec un schéma fixe |
| Langage de requête | Pas de SQL natif ; API ou couches additionnelles comme Apache Phoenix | SQL complet avec optimiseur de requêtes |
| écaillage | Horizontalement, à travers les nœuds de produits de base (pétaoctets) | Principalement vertical ; plus difficile à mettre à l'échelle |
| Transactions | Atomicité au niveau des lignes uniquement ; pas d'ACID multi-lignes | Transactions ACID complètes |
| Jointures et index | Aucune jointure native ; index à clé de ligne unique | Jointures natives et index secondaires multiples |
| Meilleur ajustement | Données en temps réel éparses, très volumineuses et à fréquence d'écriture élevée | Données structurées nécessitant des requêtes complexes |
En résumé, HBase privilégie la scalabilité et l'accès en temps réel, tandis qu'un SGBDR privilégie les requêtes complexes et une forte cohérence. Choisissez HBase lorsque le volume de données et le débit d'écriture dépassent les capacités d'une base de données relationnelle.

