L'essentiel de Hadoop

Lancer des commandes HBase dans le terminal

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Grâce à HBase Shell, vous exécuterez directement dans le terminal des opérations sur les modèles et sur les données.
08:31

Transcription

Maintenant que nous avons vu les principales caractéristiques de Hbase ainsi que ses services et comment vérifier l'état du cluster, nous allons pouvoir commencer à faire des opérations sur Hbase directement dans le terminal grâce au Shell Hbase. Pour cela, nous allons ouvrir un terminal et nous allons juste taper hbase shell hbase shell va créer un shell, se connecter au (inaudible) de ZooKeeper et trouver le hbase master actuellement actif. Il va alors s'y connecter et lancer une connexion et nous mettre à disposition plusieurs commandes pour exécuter son cluster Hbase. On peut faire la commande Help pour voir la liste des commandes disponibles et avoir une aide pour chacune et, notamment, elles sont triées par groupe et on retrouve les commandes de DDL telles qu'on en a parlé par exemple alter, create, describe, unable, disable, etc... Nous allons donc créer notre première table Hbase. Pour cela, nous devons faire un create. Si nous lançons un create tout seul, nous allons voir une aide sur create qui va nous permettre de voir comment créer notre table. Pour créer notre table, le premier paramètre que l'on doit mettre, c'est le nom de la table, par exemple create MaTable. Cependant, ce n'est pas suffisant, il n'est pas possible de créer une table sans aucune famille de colonne. En effet, les familles de colonne doivent être renseignées au moment de la création de la table. On va donc rajouter une famille de colonne, on a deux solutions pour le faire, soit de mettre juste une chaîne de caractères qui sera le nom de la famille, soit de mettre un objet Json qui va avoir simplement des paramètres par exemple nom famille3 (je ne sais pas pourquoi j'ai commencé à 2...) Ici, j'ai une famille colonne qui va s'appeler famille1, une autre famille colonne qui va s'appeler famille2 et sur laquelle je vais pouvoir ajouter des options par exemple version que je vais mettre à 2 ou encore compression que je vais mettre à snappy. Donc je lance ma commande, on voit que ça a été exécuté par le hbase master, ça a pris un peu de temps pour qu'il le crée et informe toutes les régions serveurs, qu'il crée l'espace de nom, qu'il crée les régions et qu'il les assigne et on va pouvoir vérifier que maTable maintenant existe. Pour cela, on a une commande list qui permet de lister l'ensemble des tables disponibles sur le cluster Hbase. On y retrouve bien qu'il n'y a qu'une seule table qui est maTable. Il s'agit bien que d'une seule table utilisateur, il ne fait pas oublier les tables système qui ne sont pas listées grâce à la commande list. On peut faire un describe, attention il faut bien taper les commandes en minuscule et bien mettre le nom de la table entre quotes afin que cela fonctionne. Le describe de maTable permet de savoir que la table est enabled c'est-à-dire qu'elle est activée, qu'elle est montée, on peut écrire et lire dessus et elle va être composée de plusieurs familles de colonnes, chacune va avoir sa description en Json, ici, sur deux lignes. Pour chacun on va avoir un nom famille1 ainsi qu'un ensemble de paramètres qui ont pris des valeurs par défaut si on ne les avait pas précisées lors de la création. Ainsi donc, par exemple, par défaut, les versions étaient à 1, c'est-à-dire qu'il garde uniquement une seule version de chaque cellule quand je l'ai mis à 2, cela veut dire qu'il peut garder deux versions de chaque cellule. Cela veut dire que quand je vais faire un put, si la valeur existait déjà, elle va être conservée sur une ancienne version et je vais avoir une nouvelle version qui va s'y mettre. Cependant, on va en garder que deux maximum, si je le refais une troisième fois la nouvelle version va prendre le pas et on va conserver donc la version intermédiaire. De la même façon, j'ai une compression possible sur chaque famille de colonne et donc c'est une compression qui va se faire sur la famille colonne, par bloc, directement et qui peut être activé ou non et on peut choisir le codec de compression. Snappy est souvent un très bon choix pour du hbase, en effet, c'est un algorithme de compression qui a été développé par Google, qui a de très bonnes performances CPU, c'est-à-dire qu'il utilise très peu de CPU, qu'il a des temps de compression et de décompression qui sont très bons mais qui réduit pour autant l'espace de stockage nécessaire pour stocker les données et surtout, de ce fait-là, les transferts de données puisque si les données sont compressées et qu'il y en a dix fois moins en volumétrie, les transferts prennent forcément dix fois moins de temps également. Ca peut donc être très rentable d'utiliser un algorithme de compression pour les performances, il faut cependant faire attention, la compression est opérée directement à un niveau de blocs sur hbase et c'est toute la famille de colonnes qui est compressée, c'est-à-dire que pour accéder à une donnée, elle va souvent décompresser l'intégralité de la famille de colonne pour cette région. Cela peut donc avoir un surcoût très important si, au lieu de faire des opérations par batchs, par lots, sur hbase, vous faites surtout des get. Une fois que nous avons créé notre table, nous allons pouvoir y ajouter, à proprement parler, des données. Pour cela, nous allons simplement faire une commande put. La commande put, que nous pouvons voir ici, va consister à mettre en premier argument le nom de la table, on va donc ajouter maTable, en second argument on va mettre le nom de la clé, c'est-à-dire mon fameux sgilliot, en troisième argument, ça va être la colonne, sous le format famille de colonne identifiant de colonne, par exemple adresse:rue adresse étant ma famille de colonne et rue étant ma colonne et la dernière étant la valeur Créqui. On va réaliser ce put et on voit que cela ne fonctionne pas. En effet, il me dit que la famille de colonne spécifiée qui était adresse n'existe pas dans ma table. Effectivement, je n'ai que les familles de colonne famille1 et famille2. Je peux donc recommencer, sauf qu'au lieu de mettre adresse:rue, je vais donc utiliser la famille colonne famille1:rue, cela fonctionne. Maintenant, je vais utiliser la commande scan sur ma table qui permet de voir le contenu de la table. Ainsi un scan de ma table va me montrer tout ce qu'il y a dedans. J'ai une ligne avec un identifiant sgiliot qui a pour colonne famille1:rue un timestamp et une valeur. On peut modifier la valeur, en mettant Créqui2 comme rue, je peux refaire un scan et je vois bien que ma valeur a été modifiée directement. Comme vous le voyez, l'opération put marche, que ce soit une insertion ou une modification. Essayons de faire la même chose sur la famille2, je vais faire sgilliot famille2:rue je refais un scan et je vois bien deux entrées ici pour la même ligne dans Hbase, pour la même clé de ligne qui consiste en famille1:rue et famille2:rue Si je fais également la même chose en modifiant la famille2, je vais maintenant même avoir toujours deux entrées. Effectivement, mon scan par défaut va me sortir toujours la dernière version disponible. Je peux cependant demander à avoir plus de versions. Pour cela, je peux faire un scan de maTable, on va faire juste un scan tout court pour pouvoir avoir les paramètres et je peux faire un scan de maTable et passer comme paramètre version2 pour dire que je veux deux versions de chacune des cellules, en tout cas là où c'est disponible. Donc famille1, il n'y avait qu'une version maximum qui était stockée donc on n'a qu'une version qui est la dernière. Famille2 on a deux versions qui sont identifiées par leur timestamp. Le timestamp le plus élevé donc le plus récent correspond à la première version, à la version accessible systématiquement. L'autre correspond donc à l'ancienne version. Je peux également interroger uniquement une clé donnée par exemple en faisant un get sur maTable de la ligne ayant pour identifiant sgilliot. Alors j'ai oublié ici ma virgule qui sépare mes différents paramètres et je peux retrouver effectivement tout ce qui concerne sgilliot. Encore une fois je n'ai pas précisé le nombre de version que je veux récupérer donc je ne récupère qu'une seule version.

L'essentiel de Hadoop

Mettez en pratique les concepts spécifiques à Hadoop. Abordez l'HDFS pour le stockage, les MapReduce pour le traitement, ainsi que la base de données NoSQL d​e Hadoop : HBase.

3h43 (42 vidéos)
Aucun commentaire n´est disponible actuellement
Logiciel :
HBase HBase 1.2
Spécial abonnés
Date de parution :31 mars 2017

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !