Développer une application Big Data avec Hadoop

Mettre en place un workflow Oozie

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Mettez en place un flux de travail Oozie. Puis définissez les actions à exécuter dans la configuration.
08:24

Transcription

Alors, maintenant que nous avons mis en place notre MapReduce qui va permettre réellement de réaliser notre code métier, de réaliser le traitement de données, nous allons mettre en place un workflow Oozie qui va nous permettre, quant à lui, d'industrialiser la chose, de lancer séquentiellement les différentes actions que nous voulons. Alors nous allons tester dans un premier temps, de mettre en place un simple workflow Oozie qui va déjà permettre de vider le répertoire de sortie et de lancer le MapReduce pour le remplir par la suite. Cela peut sembler très simple mais ça nous évitera d'avoir à le faire manuellement à chaque fois et de l'oublier. Auparavant et avant toute chose il nous faut configurer Oozie pour qu'il puisse fonctionner avec l'ensemble de ces actions. Donc pour cela on va d’abord le stopper et on va lancer ce qu'on appelle la création de sharelib, c'est-à-dire de mettre à disposition sur l'hdfs les différentes librairies nécessaires à Oozie. Alors pour ça, ce cloudera, on a une commande qui est sur oozie-setup à lancer, en tant que super-utilisateur, donc avec un sudo et on fait oozie-setup sharelib create. Alors, on rajoute le FileSystem sur lequel on veut le créer, avec l'option fs et on met hdfs pour nœud quickstart.cloudera. En effet c'est le nom du cluster avec 8020 qui est le port pour l'hdfs. On met le chemin dans lequel sont les locallibs. Si nous utilisons MapReduce v2 la nouvelle API nous allons mettre usr/lib/ oozie/oozie-sharelib-yarn. Alors, nous allons vérifier auparavant que ce répertoire existe bien, il existe, il contient un répertoire lib à savoir que nous avons aussi un répertoire oozie-sharelib-mr1 qui est celui correspondant à l'api v1 de MapReduce. Nous venons sur la commande et on va avoir oozie qui va créer directement les librairies partagées et les mettre à disposition sur l'hdfs. Une fois que cette commande va être terminée nous allons pouvoir redémarrer Oozie et nous aurons accès aux librairies partagées notamment pour pouvoir utiliser, par exemple, du Sqoop avec Oozie. Alors cela étant fait, nous allons pouvoir commencer à proprement parler, notre workflow et pour ce faire nous allons créer un fichier xml qui va correspondre à la définition de notre workflow. On va l'appeler Workflow.xml et nous allons le mettre à la racine de notre répertoire de travail de notre projet. Alors, un fichier workflow.xml se construit toujours de la même façon, il a une racine qui est workflow-app et dedans on va avoir plusieurs nœuds, un premier nœud qui va être start et qui permet de savoir quelle action va être lancée en premier, au début du workflow. Ensuite on va avoir plusieurs nœuds action qui ont chacun un nom, par exemple, le nom rmdir et qui vont spécifier à la fois une action, donc, deux qui peuvent être de plusieurs types ici, par exemple, fs pour dire qu'on fait sur le FileSystem et qui va avoir à la fin, à la fois un ok pour savoir qu'est-ce qu'on fait si tout fonctionne, on va aller, on va dire à la fin pour savoir qu'est-ce que l'on fait si jamais il y a une erreur par un error. Ici on va aller au nœud, par exemple, error. Il va nous falloir créer ces nœuds, c'est toujours la même chose, le end qui est un nœud de type end et le error qui est un nœud de type kill, qui permet de supprimer réellement, d'arrêter en tout cas réellement le workflow. Il ne nous reste plus qu'à remplir le code de fs, nous voulons faire un delete et spécifiant le path, par exemple, disons que nous avons delete, le path pour nos deux répertoires de sortie de soi data/aggregated_data. Voilà nous avons fait notre premier workflow, nous allons lui dire de commencer à l'action rmdir, il va réaliser une action sur le système de fichiers qui est l'action delete, si elle se passe bien il va aller au nœud end qui est nœud de fin, si cela se passe mal il va aller au nœud error qui est un nœud qui tue le workflow. Ceci est un premier workflow très simple et nous pouvons ensuite générer, rajouter des actions simplement. Pour ça, par exemple, nous pouvons faire une seconde action qui va avoir pour nom Mr pour MapReduce et donc, toujours pareil, on commence par mettre l'action, on lui met directement ce qui va se passer en cas de succès, ce qui va se passer en cas d'erreur, on va faire le lien, c'est-à-dire que rmdir va aller directement à l'action Mr et nous allons pouvoir créer cette action qui va être de type MapReduce. L'action MapReduce va avoir besoin de plusieurs paramètres, notamment, le job-tracker, le nameNode, etc. Ces paramètres, nous n'allons pas les mettre en brute mais nous allons les définir dans un fichier à côté qui va être un fichier properties. Pour cela nous pouvons créer directement un fichiers de properties, nous choisissons son nom comme nous le voulons, ici, par exemple, processor.properties pour le workflow processor et il s'agit d'un fichier properties Java dans lequel nous allons pouvoir mettre un ensemble de paramètres, ici mettrons directement, voilà le nameNode, le jobTracker, quelques paramètres relatifs à Oozie et, par exemple, une variable processDir que nous allons pouvoir utiliser directement ici, dans notre delete, à la place de mettre le chemin aggregated. Pour cela nous faisons un $ accolade processDir fin accolade . Nous allons faire la même chose, par exemple, pour le jobTracker ou le nameNode dans MapReduce et nous allons mettre directement, voilà jobTracker, $ accolade jobTracker. Nous allons pouvoir rajouter tout un ensemble de configurations dans l'actions MapReduce qui va permettre de définir à proprement parler, quelle va être la variable de configuration pour MapReduce. En l’occurrence on va avoir et on va retrouver notamment des paramètres de configuration liés au MapReduce sur hadoop mais également surtout le nom du job, la classe de Mapper qui pour nous est GhcnMapper, ou encore le InputFormat, la clé, la table, simplement, de Input, mais également la classe de reducer, donc ProcessorReduser qui s'appelle ici AggregatorReducer, le TextOutputFormat, l'outputdir, dans processDir le nom de reducer et également, MyCombiner, MyPartitioner, les classes de Combiner, de Partitioner, de GroupingComparator ou de SortComparator. Nous avons tout cela et nous allons pouvoir lancer notre workflow Oozie directement pour pouvoir exécuter notre MapReduce. A savoir qu'il existe une astuce permettant directement de demander lors de l'action MapReduce à réaliser la suppression de répertoire de sortie, il s'agit de rajouter un nœud prepare avec le delete à proprement parler du fichier, ça nous évite d'avoir cette action rmdir et ça nous permet de commencer directement par l'action Mr.

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 !