Azkaban est un ordonnanceur de flux de travaux par lots open source qui permet de créer, d'exécuter et de gérer des workflows comportant des dépendances complexes. Utilisez-le pour exécuter des tâches SQL XIHE sur AnalyticDB for MySQL selon une planification récurrente, avec suivi des dépendances entre les tâches.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un client MySQL installé sur le serveur où s'exécute Azkaban. Consultez la documentation MySQL.
Azkaban installé et en cours d'exécution. Consultez la documentation Azkaban.
L'adresse IP du serveur Azkaban ajoutée à la liste d'autorisation de votre cluster AnalyticDB for MySQL. Consultez Configurer une liste d'autorisation.
Préparer les données de test
Dans votre cluster AnalyticDB for MySQL, créez une base de données et une table de test :
-- Create a database.
CREATE DATABASE azkaban_test;
-- Create a table.
CREATE TABLE azkaban_test.names (
id BIGINT,
name STRING
);
-- Insert data into the table.
INSERT INTO azkaban_test.names VALUES(1, 'Li'), (2, 'Yang');
Étape 1 : Rédiger un fichier de workflow
Un workflow Azkaban se compose de fichiers .job, chacun définissant une tâche unique. Chaque tâche déclare son type, la commande shell à exécuter et les tâches dont elle dépend. Regroupez tous les fichiers .job dans un fichier ZIP à télécharger.
Cet exemple définit trois tâches qui s'exécutent séquentiellement : start → exec_query → end.
Fichiers de tâches
start.job — point d'entrée du workflow :
#start
type=command
command=echo 'job start'
exec_query.job — exécute l'instruction SQL sur AnalyticDB for MySQL une fois la tâche start terminée :
type=command
dependencies=start
command=mysql -h<endpoint> -u<username> -p<password> -P3306 -e "create table azkaban_test.duplicated_names as select * from azkaban_test.names"
end.job — signale la fin du workflow une fois la tâche exec_query terminée :
#end
type=command
dependencies=exec_query
command=echo 'job end'
Les champs clés de chaque fichier .job sont les suivants :
| Champ | Description |
|---|---|
type=command |
Exécute la valeur de command en tant que commande shell |
dependencies |
Liste séparée par des virgules des noms de tâches qui doivent être terminées avant le démarrage de cette tâche |
command |
La commande shell à exécuter |
La commande MySQL dans exec_query.job utilise les paramètres suivants :
| Paramètre | Description |
|---|---|
-h |
Endpoint du cluster AnalyticDB for MySQL. Vous le trouverez sur la page Cluster Information dans la console AnalyticDB for MySQL. |
-u |
Nom du compte de base de données pour le cluster |
-p |
Mot de passe du compte de base de données |
-P |
Numéro de port. Définissez-le sur 3306. |
-e |
Instruction SQL à exécuter |
Empaqueter le workflow
Créez un dossier, placez-y tous les fichiers .job et compressez le dossier au format ZIP.
Étape 2 : Créer un projet et télécharger le fichier de workflow
Connectez-vous à la console Azkaban. Dans la barre de navigation supérieure, cliquez sur Projects.
Dans le coin supérieur droit, cliquez sur Create Project.
Dans la boîte de dialogue Create Project, saisissez un Name et une Description, puis cliquez sur Create Project.
Dans le coin supérieur droit, cliquez sur Upload.
Dans la boîte de dialogue Upload Project Files, sélectionnez le fichier ZIP que vous avez créé, puis cliquez sur Upload.
Étape 3 : Exécuter le workflow
Sur la page Projects, cliquez sur l'onglet Flows.
Cliquez sur Execute Flow.
Dans la boîte de dialogue, cliquez sur Execute.
Dans la notification Flow submitted, cliquez sur Continue.
Étape 4 : Afficher les détails d'exécution
Dans la barre de navigation supérieure, cliquez sur Executing.
Cliquez sur l'onglet Recently Finished pour voir les exécutions terminées.
Cliquez sur un execution ID pour ouvrir la page de détails de l'exécution.
Sur l'onglet Job List, examinez l'état et la durée de chaque tâche.
Cliquez sur Logs à côté d'une tâche pour afficher son journal d'exécution complet.