Le 14 septembre 2017, nous avons publié une version actualisée de notre Politique de confidentialité. En utilisant video2brain.com vous vous engagez à respecter ces documents mis à jour. Veuillez donc prendre quelques minutes pour les consulter.

L'essentiel de Hadoop

Exécuter des opérations en Java

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Grâce à l'API (Application Programming Interface, interface de programmation d'applications) Java, vous serez en mesure d'accéder à HDFS et d'y lancer diverses opérations.
07:39

Transcription

À présent, nous allons voir comment accéder directement à l'HDFS et aux données stockées sur le cluster à partir de l'API Java. Pour ce faire, nous allons donc utiliser Eclipse qui est disponible directement sur la quickstart VM de Cloudera grâce à la commande ./eclipse/eclipse Ça va donc nous démarrer Eclipse et nous allons créer un nouveau projet Java qui va nous permettre de stocker notre code. On va l'appeler monProjetHDFS, par exemple. Nous allons rester en Java 1.7 tel que configuré sur la VM et surtout nous allons rajouter les librairies HDFS dans le classpath. Pour cela, nous allons bien dans l'onglet librairies du nouveau projet et nous allons faire un Add external jars. Nous allons rajouter les librairies HDFS, librairies qui sont disponibles sur la machine directement dans user lib et nous allons prendre celles d'Hadoop, toutes celles qui sont dans user lib Hadoop, tous les jars ici, ainsi que dans user lib Hadoop lib pour prendre toutes leurs dépendances et nous allons rajouter également dans le doute toutes celles qui sont dans user lib Hadoop-HDFS et également dans Hadoop-HDFS/lib. Cela va nous faire forcément des doublons et un petit peu trop de librairies, il faudrait nettoyer cela pour faire une application un petit peu plus propre. A présent, nous allons créer une class Java très simple avec surtout une méthode main. Cette class, on va l'appeler monProjetHDFS, de la même façon. On va pouvoir essayer d'accéder directement à notre système de fichier HDFS dans cette méthode. Pour utiliser un système de fichiers HDFS, nous allons passer par Hadoop FS et notamment la class FileSystem qui est dans... qui n'est pas celle-là, il faut laisser à Hadoop le temps de charger les class, mais qui est celle du package org.apache.hadoop.fs Ce file system, nous allons l'initialiser. Pour cela, il faut utiliser la méthode static FileSystem.get et donc, nous allons utiliser FileSystem.get de configuration. Il nous faut alors une configuration, attention, c'est bien une configuration du package Hadoop donc toujours celui-ci org.apache.hadoop et cette fois-ci conf. On va en instancier une, facilement et cette configuration va automatiquement charger les paramètres par défaut et les paramètres définis sur le système de fichiers local. Le file system peut déclencher une exception que l'on va froze directement sur la méthode main et, à partir du file system, nous pouvons essayer de faire un ensemble d'opérations. Par exemple, on va essayer de récupérer les paramètres d'un fichier, les détails d'un fichier, sa date de création, sa date de dernier accès, ses permissions, ce genre de choses. Pour cela, nous allons utiliser la méthode getFileStatus directement sur l'instance de file system. Nous avons donc une méthode get file status qui va retourner une instance de file status qui a tous les détails. Elle prend en paramètre un path attention, c'est bien un path Hadoop donc de org.apache.hadoop FS path et nous allons faire ça sur le fichier workspace/text.txt.gz Nous allons faire ça et nous voulons l'afficher directement à l'écran. Nous allons donc mettre ça dans un système.out.println Nous allons exécuter notre programme et voir ce qu'il se passe. Les trois premières lignes correspondent au warning d'initialisation de log4j ce n'est pas grave, on peut les ignorer. Par contre, les ligne suivantes nous disent que le fichier /workspace/text.txt.gz n'existe pas. On a donc une jolie exception java IO FileNotFoundException Vérifions cependant sur notre HDFS. Voilà, avec le nom du fichier. Et on voit bien que notre fichier existe sur l'HDFS. Que se passe-t-il ? Il se passe qu'Hadoop FS est une couche d'abstraction qui permet d'accéder à plusieurs systèmes de fichiers et on ne lui a pas dit d'aller sur le système de fichiers HDFS. On lui a dit d'aller juste checher le fichier /worspace/test.txt.gz et Hadoop FS essaye de le chercher en local. Alors, on peut essayer de lui dire désormais ici grâce, directement, en passant l'URI plutôt que le chemin absolu donc, l'URI va être hdfs:// et ça va être le nom de la machine, le nom de notre cluster donc quickstart.cloudera:8020 C'est le nom que l'on retrouve directement dans l'interface Web du NameNode. On va relancer notre code et on voit que ça ne fonctionne pas mais pas pour la même raison maintenant il nous dit qu'on n'est pas sur le bon système de fichiers. En effet, on a instancié un système de fichiers et ce système de fichiers, comme on n'a rien précisé, c'est le système de fichiers local. Pour instancier un système de fichiers, on peut passer par une méthode qui va récupérer une URI en premier argument et qui va, de ce fait, déduire le système de fichiers à utiliser. L'idée est donc d'utiliser directement une URI qui est passée par exemple en entrée utilisateur ou en configuration, et d'instancier le système de fichiers à partir de ça. Ainsi, on va faire une URI ici qui est de java.net qui sera directement une nouvelle URI On va gérer l'exception en la faisant traverser et on va avoir le système de fichiers qui va être automatiquement déduit à partir de l'URI donc qui va être pris grâce à cette partie-là de l'URI et qui va être instancié grâce à cela. On peut donc désormais lancer notre commande et voir tout de suite que ça marche beaucoup mieux. On a donc comme résultat un FileStatus qui nous précise le path donc l'URI vers le fichier qui nous dit si c'est un répertoire ou non, la taille, le ratio de réplication, bloc size, la date de modification, la date d'accès, le propriétaire, le groupe, les permissions et le fait que ce ne soit pas un lien symbolique. Beaucoup d'autres méthodes sont disponibles sur l'objet FS et qui donc fonctionnent quel que soit le système de fichiers derrière, que ce soit du Amazon S3, des fichiers locaux ou des fichiers sur l'HDFS. il est donc essentiel de fonctionner grâce à Hadoop FS afin de pouvoir simplement changer l'URI et que ça s'adapte directement au système de fichiers ciblé. On peut ainsi faire un fs.mkdirs pour créer des répertoires ou un fs.copyFromLocal ou .copyToLocal pour, tout simplement, transférer des fichiers du système de fichiers ciblé par exemple, l'HDFS vers le système de fichiers local ou vice-versa.

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 !