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.

Développer une application Big Data avec Hadoop

Lancer un modèle MapReduce d'import

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Codez le driver afin de piloter votre modèle MapReduce d'import. Puis, vous pourrez le lancer pour peupler HBase.
09:08

Transcription

Nous avons à présent réalisé notre mapper, notre Reducer. Nous allons donc pouvoir les lancer. Pour cela, il va falloir créer un Driver Java avec une méthode Main. On n'oublie pas de cocher la case Main, et on va faire un ImportDriver qui va être notre classe, notre méthode Main, qui va permettre de lancer notre map Reduce. Alors, on va le faire depuis Configured, c'est-à-dire qu'il y a une configuration et on va le faire implémenter l'interface Tool de Hadoop. Très bien, Eclipse a généré une méthode Main avec une méthode Run. Nous allons pouvoir initialiser une nouvelle configuration, « New configuration » qui va prendre les valeurs par défaut et être initialisée grâce aux fichiers de configuration locaux. On a Tool qu'on va lancer grâce à un Toolrunner.run, qui prend une configuration, puis un Tool, et enfin un tableau de strings « args ». On a la configuration qu'on vient d'initialiser, le Tool, ça va être un New Import Driver, et le tableau « args », qu'on va pouvoir lui passer. Ça va pouvoir « throws » des exceptions, on le met directement en throws sur Main. On va d'ailleurs mettre ça dans un système Exit, puisque ça retourne un INT correspondant à la sortie du Tool. Voilà, ça va initialiser la configuration et ça va nous appeler la méthode Run directement en passant les différents arguments en paramètres. Dans notre méthode Run, nous allons pouvoir créer un nouveau job, un nouveau job Hadoop. Ici, un org.apache.hadoop.mapreduce, prenez bien le MapReduce. qui est récupéré grâce à la méthode job.getInstance. Sur le job, nous devons préciser qu'il va falloir utiliser un Jar, qu'il va falloir déployer un Jar sur l'ensemble des serveurs. Donc, en utilisant le setJarByClass, et on met la classe sur mapper. Ainsi, le Jar contenant le mapper sera déployé sur tous les serveurs. Bien entendu, si vos mappers et Reducers ne sont pas dans les mêmes Jar, il peut être utile de le déclarer sur plusieurs Jar et de déclarer ces différentes classes. On va donner un nom à ce job, par exemple : « Import ». Et on va spécifier au job quelques détails. Notamment, on va commencer par spécifier le setMapOutputKeyClass, qui correspond à la classe de sortie du mapper et donc la classe d'entrée du Reducer. Ici, c'est un StationDateWritable. On fait StationDateWritable.class. De la même façon, on va spécifier le mapOutputValueClass qui correspond à la classe de sortie de la valeur du mapper et la classe d'entrée de la valeur du Reducer. Ici, il s'agit d'un TypeValueWritable. Une fois qu'on a fait ça, on va s'occuper de l'entrée du mapper, en mettant le InputFormatClass. Ici, on va lire à partir d'un fichier sur l'HDFS, donc ça va être un TextInputFormat.class, pour spécifier la classe. On a une méthode d'utilitaires FileInputFormat.add, la méthode s'appelle AddInputPath, elle permet de spécifier de rajouter un chemin d'entrée, il faut le spécifier grâce à un newPath : org.apache.hadoop.fs.Path Ici, pour nous, ça sera data/by year. Il va lire tous les fichiers présents dans ce répertoire de l'HDFS. On va pouvoir enfin dire notre Mapper, avec un setMapperClass, notre Mapper qui est : GHCNYearFileMapper.class, et pour notre Reducer, nous allons pouvoir utiliser la méthode de la class utilitaire TableMapReduceUtil, fournit par HBase, on prend celle du package MapReduce, et on a une méthode : « initTableReducerjob ». On passe, en premier argument, la table, donc : « ghcn », le Reducer à la place du Reducer, donc : « hBaseReducer.class », et le job, c'est-à-dire la variable Job. Une fois fait, nous pouvons définir le nombre de Reducers que nous voulons, Ici, par exemple, mettons 10. Il ne nous reste plus qu'à lancer notre Job, c'est-à-dire à lancer, grâce à la même commande, Job.waitForCompletion, en true. On fait un Return de 0 et tout est OK, on peut désormais le lancer. Pour cela, la première étape est de l'exporter en Jar, on va l'exporter en Jar, on va l'appeler, par exemple, « import » ou « monapp.jar », directement dans le Home, on sélectionne tous les fichiers et on l'envoie. Maintenant, on va l'exécuter dans Hadoop, et pour cela, on va réaliser un Java.classpath, on va rajouter le classpath de Hbase, qui est faisable en faisant « hbase classpath » entre « antiquotes ». Auquel on va rajouter notre Jar, qui est monapp.jar dans ce répertoire. On va spécifier la classe à exécuter, qui est « importDriver ». On voit que le mapReduce se lance, on a une URL de suivi pour tracker l'avancée, on va aller la regarder. Un Mapper car on n'a qu'un fichier d'entrée, 10 Reducers, et on peut vérifier les compteurs pour voir que notre job avance bien. Ça n'a pas l'air d'être le cas, notre job plante. On vérifie, il dit : « Object as Date », lors du « serialize ». On a dû se tromper sur le StationDateWritable, au moment du « write ». Effectivement, on a fait formater Station plutôt que Date, on va corriger cela directement ici, on va réexporter le Jar, à ne pas oublier, en l'« overridant », on va relancer notre commande et ça risque de ne pas marcher, car on n'a pas supprimé le répertoire de sortie. Cela fonctionne, il n'avait pas encore créé le répertoire de sorte. Un coup de chance pour nous, on prend la nouvelle URL de suivi, et on voit notre job qui fonctionne et qui s'est lancé. Si on laisse notre job aller jusqu'au bout et les Reducers s'exécuter, on voit qu'ils ont tendance à planter. En effet, le message d'erreur nous indique que la colonne Family DATE n'existe pas. En effet, on l'avait créée en minuscules dans HBase. Il nous faut revenir dans notre code, la modifier directement dans le Reducer et mettre DATE ainsi que MEASURES en minuscules. N'oubliez pas de ré-exporter votre Jar et de relancer votre job, afin qu'il se fasse complètement et que l'import ait lieu dans HBase.

Développer une application Big Data avec Hadoop

Concevez une application Big Data avec la suite Hadoop. Stockez des données dans l'HDFS et dans HBase, traitez-les en MapReduce sous YARN, exportez-les dans MySQL via Sqoop, etc.

2h31 (25 vidéos)
Aucun commentaire n´est disponible actuellement
 

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 !