L'essentiel de Hadoop

Utiliser HBase en Java

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Découvrez l'API Java pour HBase. Puis, exécutez toutes les opérations directement dans vos programmes informatiques.
07:38

Transcription

À présent nous allons essayer de voir comment utiliser et contrôler Hbase directement en Java grâce à l'API Java. Pour ce faire, nous allons comme toujours, lancer Eclipse sur la QuickStartVM grâce à la commande ./eclipse/eclipse et nous allons créer un nouveau projet Java dans lequel nous allons ajouter les librairies. monProjetHBase, toujours en Java 1.7 et dans l'onglet librairies, on n'oublie pas d'ajouter les extends à Jar et donc on aura tous les Jar nécessaires dans userlib, ici, Hadoop, qu'on va mettre de base. Toutes les libs d'Hadoop également qu'on va rajouter et donc userlib Hbase pour pouvoir l'utiliser ainsi que ces libs. Nous voilà avec un projet tout préparé et nous allons pouvoir créer une première classe avec toujours une méthode main. Donc, une classe qui s'appellera monProjetHBase avec une méthode main qui va être générée par Eclipse, la voilà, et nous pouvons désormais jouer avec Hbase. La première chose dont nous avons besoin est d'établir la connexion à Hbase. Pour cela nous allons avoir besoin de la configuration Hbase et nous avons donc cette fois-ci, une méthode un peu particulière qui s'appelle la Hbase configuration qui permet directement de récupérer la configuration Hbase. Pour cela on fait un HBaseConfiguration.create et ça va donc récupérer la configuration par défaut ainsi que celle définie directement dans les fichiers de configuration Hbase, sur le système de fichiers local. Ça va nous retourner un objet de type configuration org.apache.dub.conf.Configuration À partir de ça, on peut établir une connexion. Pour ça, on utilise donc une ConnectionFactory qui va avoir une méthode CreateConnection qui prend donc une configuration. Cela tombe bien, on vient de l'instancier juste au-dessus. Tout cela nous ressort une Connection que vous allons mettre dans une variable Connection. Sur cette connexion, maintenant, nous pouvons utiliser plusieurs entités. Juste avant froze les IOException qui peuvent se produire. Sur la Connection, on peut, avant tout, faire un getAdmin. Cela permet de récupérer une instance de Hbase admin... cela va permettre de récupérer une instance de Hbase admin qui va nous permettre d'opérer des actions d'administration. Ces actions vont être de plusieurs ordres notamment on va retrouver, par exemple, le balancer qui peut se lancer directement en faisant admin.balancer et qui permet de balancer, d'équilibrer le cluster en réassignant les régions sur les régions serveur. On va également avoir des actions du type createTable ou deleteTable qui vont permettre réellement de créer, de supprimer des tables dans Hbase. On va également avoir la possibilité de lister l'intégralité des tables disponibles dans Hbase grâce à la commande listTables ou listTableNames selon ce que l'on veut récupérer. On peut mettre soit un pattern, ou un nom ou un préfixe, nous, on va tout lister ici. Cela va nous ressortir, on l'a vu, un tableau de tableNames, on va itérer dessus, donc, for TableNames table parmi admin.listTableNames donc, en important TableNames et on va afficher tout simplement le résultat. On fait un sys out de table.toString et on va récupérer ce que ça nous ressort. Ici, on voit toujours les warnings relatifs à log4j et notre résultat, maTable. Ensuite, on peut également récupérer réellement les tables pour pouvoir opérer dessus. Pour cela, on va utiliser la méthode connection.getTable qui va nous permettre de récupérer une table pour pouvoir lancer des opérations dessus. On va faire un connection.getTable et on voit que comme argument on a besoin d'un tableName et non pas d'une string. On ne connait que le nom de la table en string, il faut donc instancier une entité de table name grâce à TableName.valueOf qui peut prendre en paramètre, directement, une string. On va mettre TableName.valueOf de maTable et cela va nous ressortir une table Hbase donc une entité de l'objet Table qui fait partie du package Hbase, donc, celui-ci et sur lequel on va pouvoir faire quelques opérations. J'ai oublié une double quote ici et voilà, il est bien plus content. Les opérations sur la table, on les a vues. Ce sont les Get, Put, Delete. On va commencer par faire un Get, get, c'est une opération donc une classe et qu'on instancie de façon très simple en faisant un new Get. Il a besoin d'avoir l'identifiant de la ligne qu'on veut récupérer, sous forme de tableau d'octets. En effet, tout, sous Hbase, est sous forme de tableaux d'octets. Fort heureusement, les créateurs d'Hbase ont pensé à nous, ils ont fait une classe utilitaire qui s'appelle Bytes. Cette classe se situe dans le paquet org.apache.hadoop.Hbase.util et nous permet de convertir un petit peu tout en bytes et les bytes en un petit peu tout, dans le sens inverse. Ainsi, on va utiliser Bytes.toBytes donc, à partir d'une string, ça va être sgilliot la clé que l'on veut récupérer. On va faire un table.get de notre get et cela va nous ressortir, comme on l'a vu, un result Hbase. On va donc stocker ce result, ce org.apache.hadoop.Hbase.client Result et l'exploiter en faisant result.getValue où l'on voit qu'on peut spécifier une famille colonne et un identifiant de colonne, le qualifier étant l'identifiant de colonne, afin de savoir quelle valeur on veut récupérer. Toujours pareil, il nécessite un tableau de bytes. On va faire un bytes.toBytes de famille1, notre famille de colonnes, et un bytes.toBytes de rue, notre identifiant de colonnes. Ceci va donc nous récupérer un tableau d'octets, bien entendu, et on va pouvoir faire un bytes.toString, cette fois-ci pour convertir notre tableau d'octets directement en chaîne de caractères et l'afficher enfin grâce à un system.out.println. Nous allons donc lancer ce code et on voit que, hormis, ma table qui est issue de la liste des tables présentes sur Hbase, on a Créqui2 qui s'affiche, qui est bien la rue de la famille1 de colonnes de la ligne qui a pour identifiant sgilliot.

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 !