Développer une application Big Data avec Hadoop

Exporter dans MySQL grâce à Sqoop

Testez gratuitement nos 1257 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Exportez, dans MySQL, le résultat agrégé des calculs métiers réalisés par les éléments MapReduce. Ainsi, vous pourrez les exploiter dans une application web.
07:17

Transcription

A présent nous allons vouloir lancer réellement notre « MapReduce » et récupérer les résultats dans MySQL afin par exemple, que PHP puisse les lire. Pour ce faire nous allons commencer par créer une base dans MySQL. Alors sur la « Quickstart@cloudera » le service MySQL est déjà installé, le nom d'utilisateur est « root » et le mot de passe est « cloudera » . Il est lancé, nous pouvons y accéder et nous allons créer directement en ligne de commande, une database par exemple, qui s'appelle « monapp ». On fait en créer Database « monapp », on va se mettre sur cette Database et nous allons pouvoir faire un « Create Table », par exemple d'une Table « results ». Nous créons la table « results » qui va avoir au minimum un nom de job, pour pouvoir identifier c'est le résultat de quel job. Egalement donc, une « dim1 » avec qui sera un VARCHAR de 50, une « dim2 » qui sera également un VARCHAR de 50 et une valeur qui sera un INT. Nous venons de créer notre Table dans MySQL et nous pouvons exporter directement des résultats dedans. Première chose, il va nous falloir le nom du job. Le nom du job, on va le retrouver grâce à « oozie» et nous allons pouvoir le passer directement en propriété. Alors pour cela je vous propose de mettre directement à la fin de notre configuration « oozie » une propriété qui va s'appeler « workflowId » et qui va être par exemple « wf:id » et qui permet de récupérer l'identifiant du job. De la même façon d'ailleurs on peut passer d'autres propriétés qui seront, disons, « dim1 » et « dim2 » qui vont prendre de là « dim1 », « dim2 » qu'on va définir ici directement et qui vont pouvoir s'exploiter directement dans le job. Ainsi nous allons pouvoir mettre à jour directement notre « Mapper » pour au lieu d'avoir la « dim1 » et la « dim2 » qui prennent des valeurs en brut, pouvoir les initialiser avec la configuration « context.getConfiguration.getdim1 » pour récupérer ces valeurs. « Dim1 » est égal à Dimension.valueOf de cela. Nous faisons la même chose, bien entendu, pour « dim2 » et nous pouvons enlever les valeurs par défaut ici. Nous allons faire exactement la même chose bien entendu dans le Reducer. Donc, nous allons aller dans le Reducer, nous n'avons plus notre « op » qui est réellement une valeur par défaut et nous allons pouvoir faire une méthode « setup » qui va initialiser l'opérateur grâce à la configuration. Alors, nous voulons également récupérer, on a dit, le « workflowId » qu'on peut récupérer de la même façon et donc, stocker directement, par exemple sur notre Reducer. Maintenant dans chacune de nos sorties en texte, nous allons rajouter un premier paramètre le « workflowId » systématiquement, avant de renvoyer le reste du texte. Donc, nous renvoyons « workflowId, key dim1 key dim2 » et le Result. Nous voyons que c'est le format que nous avons directement dans la table MySQL. Alors pour exporter de notre fichier dans l'HDFS vers MySQL nous allons utiliser une action sqoop. Sqoop permet de faire des imports et des exports directement dans MySQL et nous allons rajouter dans notre « workflow » une action qu'on va nommer donc « Export ». Alors, comme d'habitude, nous commençons par définir les 2 nœuds en cas d’échec ou en cas de succès les OK et erreurs, nous mettons également « export » comme action à faire en cas de succès du MapReduce précédent et nous allons déclarer donc, que dans notre action c'est une action de type « sqoop ». Alors il est nécessaire ici de préciser le name space xml et nous pouvons spécifier ensuite tous les arguments. Alors, comme souvent nous commençons par le « job-tracker » et le « name-node » qui permet simplement à Oozie de savoir sur quoi exécuter cette action et ensuite nous commençons en spécifiant que nous voulons faire un export. Puis nous passons tous les arguments à chaque fois de l'export donc, d'abord « connect » qui va être la chaîne de connexion, c'est-à-dire ici, le « jdbc:mysql ://localhost/monapp », monapp étant l'at-base de données, localhost étant le savoir-base de données, jdbc:mysql pour savoir quel driver utiliser. Nous pouvons mettre également le username en utilisant directement ici le user « root ». Alors, bien entendu, je vous invite et je vous recommande vivement à créer des utilisateurs spécifiques pour vos applications avec uniquement les droits nécessaires. On peut mettre le password, à noter que « sqoop2 » a le gros avantage de centraliser les mots de passe dans un service qui sera lancé, et d'éviter d'avoir des mots de passe écrits par exemple ainsi en clair. On va mettre le répertoire à exporter. Donc, pour nous qui sera la variable « processDire », le contenu de la variable « processDire » et nous allons mettre enfin la table dans laquelle exportée la table Results. Il est à noter qu'il est nécessaire de rajouter dans les sharelib d'Oozie le connecteur « mysql jdbc » afin de pouvoir utiliser MySQL avec cela. Alors je vous recommande de télécharger directement sur le site de MySQL de l'extraire, de récupérer le jar et de l'envoyer sur l'HDFS directement. Pour ce faire nous allons le copier ici une première fois dans « var/lib/sqoop » puis dans l'HDFS grâce à la commande « hdfs dfs put » dans « user/oozie/share/lib » et notre répertoire de librairie partagée. Maintenant que nous avons réalisé cette action « sqoop » directement dans notre « workflow oozie », nous allons pouvoir le relancer, toujours grâce à la même commande « oozie-job-run » et cette fois-ci nous voyons que nous n'avons même pas besoin de supprimer le répertoire de sortie puisque c'est intégré directement dans notre « workflow ».

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 !