Tutoriel Oozie: Apprenez à planifier vos travaux Hadoop



Tutoriel Apache Oozie: Oozie est un système de planification de flux de travail pour gérer les travaux Hadoop. C'est un système évolutif, fiable et extensible.

Avant de commencer ce didacticiel Apache Oozie, voyons où le système de planification est utilisé. Dans les scénarios en temps réel, une tâche dépend d'autres tâches, comme la sortie d'une tâche MapReduce peut être transmise à la tâche Hive pour un traitement ultérieur. Le scénario suivant peut être la planification d'un ensemble de tâches en fonction du temps, par exemple quotidiennement, hebdomadairement, mensuellement ou en fonction de la disponibilité des données. Apache Oozie vous permet de gérer facilement ces types de scénarios. C'est pourquoi Apache Oozie est une partie importante de .

Dans ce blog tutoriel Apache Oozie, nous couvrirons:





  • Présentation d'Apache Oozie
  • Flux de travail Oozie
  • Coordinateur Oozie
  • Pack Oozie
  • Travail de flux de travail de décompte de mots
  • Emploi de coordinateur de comptage de mots basé sur le temps

Nous commencerons ce tutoriel Oozie en présentant Apache Oozie. Ensuite, nous comprendrons les types de travaux qui peuvent être créés et exécutés à l'aide d'Apache Oozie.

Tutoriel Apache Oozie: Introduction à Apache Oozie

Apache Oozie - Tutoriel Oozie - EdurekaApache Oozie est un système de planification pour gérer et exécuter des travaux Hadoop dans un environnement distribué. Nous pouvons créer un pipeline souhaité en combinant un type différent de tâches. Il peut s'agir de votre tâche Hive, Pig, Sqoop ou MapReduce. En utilisant Apache Oozie, vous pouvez également planifier vos travaux. Dans une séquence de la tâche, deux ou plusieurs travaux peuvent également être programmés pour s'exécuter en parallèle les uns par rapport aux autres. C'est un système évolutif, fiable et extensible.



Oozie est une application Web Java open source, chargée de déclencher les actions de workflow. Il utilise à son tour le moteur d'exécution Hadoop pour exécuter les tâches.

Apache Oozie détecte l'achèvement des tâches via le rappel et l'interrogation. Lorsque Oozie démarre une tâche, il fournit une URL HTTP de rappel unique à la tâche et notifie cette URL lorsque la tâche est terminée. Si la tâche ne parvient pas à appeler l'URL de rappel, Oozie peut interroger la tâche pour qu'elle soit terminée.

Il existe trois types d'emplois dans Apache Oozie:



  • Emplois de workflow Oozie & moins Il s'agit de graphes acycliques dirigés (DAG) qui spécifient une séquence d'actions à exécuter.
  • Emplois de Coordinateur Oozie & moins Il s'agit de travaux de workflow déclenchés par la disponibilité du temps et des données.
  • Offres groupées Oozie & moins Ceux-ci peuvent être référencés comme un package de plusieurs coordinateurs et travaux de workflow.

Maintenant, voyons tous ces emplois un par un.

Tutoriel Apache Oozie: flux de travail Oozie

Le flux de travail est une séquence d'actions organisées dans un graphe acyclique direct (DAG). Les actions dépendent les unes des autres, car l'action suivante ne peut être exécutée qu'après la sortie de l'action en cours. Une action de workflow peut être une action Pig, une action Hive, une action MapReduce, une action Shell, une action Java, etc. Il peut y avoir des arbres de décision pour décider comment et sur quelle condition un travail doit être exécuté.

Nous pouvons créer différents types d'actions en fonction du travail et chaque type d'action peut avoir son propre type de balises.Le flux de travail et les scripts ou jars doivent être placés dans le chemin HDFS avant d'exécuter le flux de travail.

Commander: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

Pour vérifier l'état de la tâche, vous pouvez accéder à la console Web Oozie, c'est-à-dire http: // nom_hôte: 11000 . En cliquant sur le travail, vous verrez le statut du travail.

Dans les scénarios, où nous voulons exécuter plusieurs tâches en parallèle, nous pouvons utiliser Fourchette . Chaque fois que nous utilisons fork, nous devons utiliser Join comme nœud final à fork. Pour chaque fourche, il devrait y avoir une jointure. Join suppose que tous les nœuds s'exécutant en parallèle sont les enfants d'un seul fork. Par exemple, nous pouvons créer deux tables en même temps en parallèle.

Si nous voulons exécuter une action basée sur la sortie de la décision, nous pouvons ajouter des balises de décision. Par exemple, si nous avons déjà la table Hive, nous n'avons pas besoin de la créer à nouveau. Dans cette situation, nous pouvons ajouter une balise de décision pour ne pas exécuter les étapes de création de table si la table existe déjà. Les nœuds de décision ont une étiquette de commutation similaire au cas de commutation.

La valeur de job-tracker, name-node, script et param peut être transmise directement. Mais cela devient difficile à gérer. C'est là qu'un fichier de configuration (c'est-à-dire un fichier .property) est utile.

Tutoriel Apache Oozie: Coordinateur Oozie

Vous pouvez planifier des flux de travail complexes ainsi que des flux de travail planifiés régulièrement à l'aide de Coordinator. Oozie Coordinators déclenche les travaux de workflows en fonction de l'heure, des données ou des prédicats d'événements. Les flux de travail à l'intérieur du coordinateur de travaux démarrent lorsque la condition donnée est remplie.

Les définitions requises pour les emplois de coordonnateur sont:

  • début & moins Date de début de la tâche.
  • fin & moins Date de fin du travail.
  • fuseau horaire & moins Fuseau horaire de l'application coordinateur.
  • la fréquence & moins La fréquence, en minutes, pour l'exécution des jobs.

D'autres propriétés sont disponibles pour les informations de contrôle:

  • temps libre & moins Le temps maximum, en minutes, pendant lequel une action attendra pour satisfaire les conditions supplémentaires, avant d'être rejetée. 0 indique que si tous les événements d'entrée ne sont pas satisfaits au moment de la matérialisation de l'action, l'action doit expirer immédiatement. -1 indique qu'il n'y a pas de délai d'expiration, l'action attendra indéfiniment. La valeur par défaut est -1.
  • concurrence & moins Le nombre maximal d'actions pour un travail pouvant s'exécuter en parallèle. La valeur par défaut est 1.
  • exécution - Il spécifie l'ordre d'exécution si plusieurs instances du travail coordinateur ont satisfait à leurs critères d'exécution. Ça peut être:
    • FIFO (par défaut)
    • LIFO
    • LAST_ONLY

Commander: travail oozie –oozie http: // localhost: 11000 / oozie -config -run

Si une propriété de configuration utilisée dans la définition n'est pas fournie avec la configuration du travail lors de la soumission du travail du coordinateur, la soumission du travail échouera.

Tutoriel Apache Oozie: Bundle Oozie

Système Oozie Bundlevous permet de définir et d'exécuter un ensemble d'applications de coordination, souvent appelé pipeline de données. Dans un bundle Oozie, il n'y a pas de dépendance explicite entre les applications de coordination. Cependant, vous pouvez utiliser la dépendance de données des applications de coordination pour créer un pipeline d'application de données implicite.Vous pouvez démarrer / arrêter / suspendre / reprendre / réexécuter le bundle. Il donne un contrôle opérationnel meilleur et facile.

Heure de coup d'envoi & moins L'heure à laquelle un bundle doit démarrer et soumettre des candidatures de coordinateur.

<> opérateur en SQL

En progressant dans ce didacticiel Apache Oozie, nous allons comprendre comment créer un travail de flux de travail.

Tutoriel Apache Oozie: tâche de flux de travail de décompte de mots

Dans cet exemple, nous allons exécuter un travail de décompte de mots à l'aide d'Apache Oozie. Ici, nous ne discuterons pas de la façon d'écrire un programme de comptage de mots MapReduce. Donc, avant de suivre ce tutoriel Apache Oozie, vous devez télécharger ceci pot de nombre de mots fichier. Maintenant, créez un répertoire WordCountTest dans lequel nous placerons tous les fichiers. Créez un répertoire lib dans lequel nous placerons le pot de décompte de mots comme indiqué dans les images ci-dessous.

Maintenant, allons de l'avant et créons job.properties & workflow.xml fichiers, où nous spécifierons le travail et les paramètres qui lui sont associés.

job.properties

Premièrement, nous créons un job.properties fichier, où nous définissons le chemin de NameNode & ResourceManager. Le chemin NameNode est requis pour résoudre le chemin du répertoire du workflow et le chemin du jobTracker aidera à soumettre le travail à YARN. Nous devons fournir le chemin du workflow.xml fichier, qui doit être stocké dans HDFS.

workflow.xml

Ensuite, nous devons créer le workflow.xml fichier, où nous définirons toutes nos actions et les exécuterons. Tout d'abord, nous devons spécifier le nom de l'application de flux de travail, c'est-à-dire WorkflowRunnerTest . Ensuite, nous spécifions le nœud de départ . Le nœud de départ ( dans la commencer à marque ) est le point d'entrée d'un travail de workflow. Il pointe vers le premier nœud de flux de travail à partir duquel le travail doit commencer. Comme vous pouvez le voir dans l'image ci-dessous, le nœud suivant est intersection0 d'où le travail commencera.

Ensuite, nous spécifions la tâche à effectuer, dans le nœud d'action. Nous exécutons ici une tâche MapReduce WordCount. Nous devons spécifier les configurations requises pour exécuter cette tâche MapReduce. Nous définissons le suivi des travaux et l'adresse NameNode.

Vient ensuite l'élément préparé, qui est utilisé exclusivement pour le nettoyage du répertoire, avant d'exécuter l'action. Ici, nous effectuons une opération de suppression dans HDFS pour supprimer le out1 dossier s'il est déjà créé. La balise Prepare est utilisée pour créer ou supprimer un dossier avant d'exécuter le travail. Ensuite, nous spécifions les propriétés MapReduce telles que le nom de la file d'attente des travaux, la classe du mappeur, la classe du réducteur, la classe de clé de sortie et la classe de valeur de sortie.

La dernière configuration de tâche MapReduce est le répertoire d'entrée et de sortie dans HDFS. Le répertoire d'entrée est Les données répertoire, qui est stocké dans le chemin racine de NameNode . Enfin, nous spécifierons l'élément kill si le travail échoue.

Maintenant, nous devons déplacer le WordCountTest dossier dans HDFS, comme nous l'avons spécifié dans oozie.wf.application.path propriété dans job.properties fichier. Donc, nous copions le WordCountTest dossier dans le répertoire racine Hadoop.

c ++ aller à

Commander: hadoop fs -put WordCountTest /

Pour vérifier, vous pouvez accéder à l'interface utilisateur Web de NameNode et vérifier si le dossier a été téléchargé dans le répertoire racine HDFS ou non.

Maintenant, nous sommes tous prêts à aller de l'avant et à exécuter le travail de workflow.

Commander: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

Une fois que nous avons exécuté notre travail, nous obtiendrons l'identifiant du travail (c.-à-d. 0000009-171219160449620-oozie-edur-W ) comme indiqué dans l'image ci-dessus. Vous pouvez aller vérifier le travail que vous avez soumis dans l'interface utilisateur Web d'Oozie, c'est-à-dire hôte local: 11000 . Vous pouvez voir dans l'image ci-dessous, le travail que nous avons soumis est répertorié vers le bas.

Si vous observez dans l'image ci-dessus, vous verrez l'ID du travail, le nom du travail, le statut du travail, l'utilisateur qui a soumis le travail, l'heure de création, le début et la dernière modification. Vous pouvez cliquer sur le travail pour obtenir plus de détails comme:

  • Infos sur l'emploi

  • Définition de l'emploi

  • Configuration du travail

Lorsque l'état du travail est réussi, nous devons donc aller dans le répertoire racine de HDFS et vérifier si le répertoire de sortie a été créé ou non.

Comme vous pouvez le voir, le suintant a été créé dans le HDFS, alors examinons maintenant le fichier de sortie qui a été créé.

Comme nous avons vu comment créer un travail de flux de travail Oozie, nous allons maintenant avancer dans ce blog du didacticiel Apache Oozie et comprendre comment créer un travail de coordinateur.

Tutoriel Apache Oozie: Emploi de coordinateur de décompte de mots basé sur le temps

Dans cet exemple, nous allons créer un travail de coordination du nombre de mots basé sur le temps qui sera exécuté après un intervalle de temps spécifique. Vous pouvez créer et planifier une tâche à l'aide d'Apache Oozie qui doit être exécutée quotidiennement ou périodiquement.

Avançons rapidement dans ce tutoriel Apache Oozie et créons un job de coordinateur. Ici, nous allons créer trois fichiers, c'est-à-dire coordinator.properties , coordinator.xml & workflow.xml fichier. Encore une fois, ici nous placerons le w ordcount pot à l'intérieur du lib répertoire comme indiqué dans l'image ci-dessous.

Examinons maintenant ces fichiers individuellement. Tout d'abord, nous allons commencer avec le fichier coordinator.properties.

Ici, nous spécifions la fréquence à laquelle le workflow sera exécuté. La fréquence est toujours exprimée en minutes. Dans notre cas, ce travail de coordinateur sera exécuté une fois toutes les heures entre l'heure spécifiée. La fréquence est utilisée pour capturer les intervalles périodiques auxquels les ensembles de données sont produits et les applications de coordination sont planifiées pour s'exécuter.

Pour définir la fréquence en minutes, heures, jours et mois, utilisez le format suivant:

$ {coord: minutes (int n)} n $ {coord: minutes (45)} -> 45
$ {coord: heures (int n)} n * 60 $ {coord: heures (3)} -> 180
$ {coord: jours (int n)} variable $ {coord: days (2)} -> minutes en 2 jours complets à partir de la date actuelle
$ {coord: mois (int n)} variable $ {coord: mois (1)} -> minutes dans un mois complet à partir de la date actuelle

Ensuite, nous définissons l'heure de début et de fin du travail comme indiqué dans l'image ci-dessus. Heure de début est la date de début du travail & heure de fin est la date de fin du travail.

Ensuite, nous spécifions l'url NameNode et ResourceManager, qui seront utilisées pour référencer le fichier workflow.xml dans HDFS et soumettre les travaux à YARN respectivement. Enfin, nous spécifions le chemin workflow.xml, que nous stockerons dans HDFS. Nous spécifierons également le chemin de l'application où tous les fichiers et le répertoire lib seront stockés.

Le deuxième fichier est coordinator.xml où nous utiliserons toutes les propriétés que nous avons spécifiées dans le coordinator.properties fichier. Maintenant, d'abord, nous allons spécifier les propriétés de l'application de coordination, c'est-à-dire le nom, la fréquence et le fuseau horaire. Ensuite, nous spécifierons les workflows un par un. Ici, nous n'avons qu'un seul flux de travail. Ainsi, à l'intérieur de l'élément d'action, nous allons créer un élément de flux de travail, où nous spécifierons le chemin de l'application.

Ensuite, pour avancer, nous devons créer workflow.xml fichier où nous préciserons la tâche. Il est similaire au workflow.xml fichier, que nous avons créé dans le travail de flux de travail.

Maintenant encore, nous allons déplacer ceci WordCountTest_TimedBased répertoire vers HDFS.

Commander : hadoop fs -put WordCountTest_TimeBased /

Maintenant, nous sommes tous prêts à aller de l'avant et à exécuter ce travail de coordinateur dans ce tutoriel Oozie. Allons-y et exécutons-le.

Commander : travail oozie –oozie http: // localhost: 11000 / oozie -config coordinator.properties -run

Notez cet identifiant de poste de coordinateur (par exemple, 0000010-171219160449620-oozie-edur-C). Cela vous aidera à retrouver votre travail dans l'interface utilisateur Web d'Oozie.

Vous pouvez voir le travail répertorié dans votre onglet Emplois de coordinateur dans l'interface utilisateur Web d'Oozie. Semblable au travail de workflow, nous avons le nom, le statut, l'utilisateur, la fréquence, l'heure de début et de fin du travail. Lorsque vous cliquerez sur un travail particulier, vous verrez les détails du travail, comme indiqué dans les images ci-dessous.

  • Coordonnées du poste de coordonnateur

  • Définition du poste de coordonnateur

  • Configuration des tâches du coordinateur

Maintenant, comme nous avons regardé à travers les différents onglets. Nous reviendrons au répertoire racine HDFS où le dossier de sortie sera créé. Comme vous pouvez le voir dans l'image ci-dessous, oozieTimeBasedout répertoire a été créé, comme nous l'avons spécifié dans workflow.xml fichier.

Jetons maintenant un œil au fichier de sortie qui a été créé.

qu'est-ce que le vecteur en java

J'espère que vous avez trouvé ce blog du didacticiel Apache Oozie instructif. Si vous souhaitez en savoir plus, vous pouvez passer par ceci qui vous informe sur le Big Data et comment Hadoop résout les défis liés au Big Data.

Maintenant que vous avez compris Apache Oozie, consultez le par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier. Le cours de formation à la certification Edureka Big Data Hadoop aide les apprenants à devenir des experts dans les domaines HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume et Sqoop en utilisant des cas d'utilisation en temps réel sur le commerce de détail, les médias sociaux, l'aviation, le tourisme et la finance.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires et nous vous recontacterons.