## Introduction Apache Hop (Hop Orchestration Platform) est un outil d'intégration et d'orchestration de données qui permet de concevoir, exécuter et surveiller visuellement des pipelines de données. Comprendre son architecture est essentiel pour les développeurs, les consultants DevOps et les équipes techniques de startups qui ont besoin de flux de données fiables et maintenables. Ce guide explique les composants de base d'Apache Hop, la manière dont les données circulent dans un pipeline, comment configurer et déployer Hop en toute sécurité, et comment vérifier et dépanner les pipelines. Vous apprendrez des commandes pratiques, les sorties attendues, les signaux d'échec et les étapes de récupération. L'accent est mis sur la sécurité opérationnelle : observer avant de modifier, limiter le rayon d'impact, utiliser des espaces réservés plutôt que des secrets, vérifier les résultats et documenter les chemins de récupération. Tout au long de ce guide, nous utilisons des exemples concrets avec des espaces réservés explicites, des commandes versionnées et des étapes de vérification. Aucune donnée d'identification réelle ou de production n'est utilisée. ## Inventaire des versions et de l'environnement Avant toute modification, faites l'inventaire de la version installée, de la topologie de déploiement et des prérequis. Cela établit une base de référence connue et vous aide à choisir les commandes et la configuration appropriées. ### Identifier la version installée Exécutez la commande de version de Hop à partir du répertoire d'installation de Hop. La sortie affiche la version et les informations de build. ./hop-conf.sh --version Sortie attendue : Apache Hop 2.1.0 Si la commande échoue, vérifiez que les binaires de Hop sont dans votre PATH et que Java 11 ou une version ultérieure est installé. Utilisez java -version pour vérifier l'environnement d'exécution Java. ### Déterminer la topologie de déploiement Apache Hop peut s'exécuter localement, sur un serveur unique ou dans un environnement en cluster. Les topologies courantes incluent : - Développement local : l'interface graphique et l'exécution de Hop sur une seule machine. - Exécution à distance : l'interface graphique de Hop sur un poste de travail, l'exécution sur un serveur Hop distant. - Cluster : plusieurs serveurs Hop pour la haute disponibilité ou l'équilibrage de charge. Pour voir votre configuration actuelle, inspectez la sortie de hop-conf.sh ou consultez le répertoire config pour des fichiers tels que hop-config.json et metadata . ### Observation en lecture seule Capturez l'état actuel avant les modifications. Par exemple, listez les processus Hop en cours d'exécution : ps -ef | grep hop La sortie attendue inclut les processus du serveur Hop ou des pipelines. Notez les identifiants de processus et les heures de démarrage. ### Prérequis Assurez-vous que ces prérequis sont remplis : - Java 11 ou 17 (OpenJDK recommandé) - Mémoire suffisante (au moins 2 Go pour les petites charges de travail) - Accès réseau pour les dépôts distants ou les connexions aux bases de données - Permissions utilisateur appropriées pour lire/écrire dans le répertoire d'accueil de Hop ### Changement minimal justifié Lorsque vous modifiez la configuration, modifiez un élément à la fois. Par exemple, si vous devez augmenter la mémoire du serveur Hop, modifiez le fichier setenv.sh ou setenv.bat . Avant de modifier, enregistrez la valeur d'origine. # Paramètre de mémoire actuel dans setenv.sh HOP_OPTS="-Xmx1024m" Remplacez par : HOP_OPTS="-Xmx2048m" ### Vérification Après la modification, redémarrez Hop et vérifiez le nouveau paramètre avec : ./hop-server.sh -h La sortie doit afficher la taille maximale du tas mise à jour dans le texte d'aide ou les journaux d'exécution. ## Chemin de configuration sécurisé La configuration sécurisée d'Apache Hop implique de comprendre les fichiers de configuration, les variables d'environnement et la manière dont ils affectent l'exécution des pipelines. ### Fichiers de configuration Les principaux fichiers de configuration se trouvent dans le répertoire config : - hop-config.json : configuration principale (connexions aux bases de données, paramètres de cluster) - Fichiers environment : variables spécifiques à l'environnement - Dossier metadata : métadonnées partagées pour les transformations et les travaux Sauvegardez toujours les fichiers de configuration avant de les modifier. cp hop-config.json hop-config.json.bak ### Gestion des identifiants Ne stockez jamais de mots de passe en texte clair dans les fichiers de configuration ou les définitions de pipeline. Utilisez des variables d'environnement ou la gestion des secrets intégrée de Hop. Exemple : définissez une variable d'environnement pour un mot de passe de base de données : export DB_PASSWORD='votre_mot_de_passe_securise' Référencez-la ensuite dans Hop en utilisant un espace réservé de variable comme ${DB_PASSWORD} . Dans le pipeline, configurez la connexion à la base de données pour utiliser cette variable. ### Exemple : modification d'une connexion à une base de données Supposons que vous deviez changer l'hôte d'une connexion à une base de données utilisée dans plusieurs pipelines. Au lieu de modifier chaque pipeline, mettez à jour la connexion partagée dans hop-config.json : { "databases": [ { "name": "MyDatabase", "connection": { "host": "newhost.example.com", "port": 5432, "database": "mydb", "user": "etl_user" } } ] } Après modification, validez la syntaxe JSON : python -m json.tool hop-config.json Vérifiez ensuite que Hop peut charger la configuration sans erreur : ./hop-conf.sh --test Sortie attendue : « Configuration OK » ou un message de succès similaire. ### Rayon d'impact et récupération Modifier une connexion partagée affecte tous les pipelines qui l'utilisent. Limitez le rayon d'impact en testant d'abord sur un environnement de développement. Si la modification provoque des échecs, restaurez la sauvegarde : cp hop-config.json.bak hop-config.json Puis redémarrez Hop. ## Vérification et diagnostic La vérification des pipelines implique de consulter les journaux d'exécution, les métriques des pipelines et les sorties de données. ### Exécuter un pipeline Pour exécuter un pipeline à partir de la ligne de commande, utilisez hop-run : ./hop-run.sh -f /chemin/vers/pipeline.hpl -r local La sortie attendue inclut la progression de l'exécution du pipeline et le statut final : « Pipeline terminé avec succès » ou des messages d'erreur. ### Consulter les journaux du pipeline Les journaux sont stockés dans le répertoire logs . Affichez la fin du dernier journal : tail -f logs/hop.log Recherchez les lignes d'erreur commençant par ERROR ou SEVERE . Par exemple : ERROR 2025-03-15 10:23:45,123 - Échec de connexion à la base de données : Connexion refusée ### Utiliser les métriques Apache Hop peut capturer des métriques telles que le nombre de lignes traitées, le temps d'exécution et le nombre d'erreurs. Dans l'interface graphique de Hop, activez les métriques pour une transformation. À partir de la ligne de commande, les métriques sont écrites dans le journal ou dans une base de données de métriques si elle est configurée. Exemple de ligne de journal : INFO - Transformation [Entrée table] terminée, 1000 lignes traitées en 5 secondes ### Commandes de diagnostic Pour vérifier le statut d'un serveur Hop : ./hop-server.sh --status Sortie attendue : « Le serveur Hop est en cours d'exécution » ou « Le serveur Hop n'est pas en cours d'exécution ». Si le serveur n'est pas en cours d'exécution, démarrez-le : ./hop-server.sh --start Puis vérifiez avec la commande de statut. ## Modes d'échec et récupération Les modes d'échec courants dans Apache Hop incluent les échecs de connexion à la base de données, les erreurs de mémoire, les fichiers manquants et les erreurs spécifiques aux transformations. ### Échecs de connexion à la base de données Symptôme : le pipeline échoue avec « Impossible de se connecter à la base de données ». Cause : paramètres de connexion incorrects, base de données hors service ou problèmes réseau. Récupération : - Testez la connexion à la base de données depuis la ligne de commande : ./hop-run.sh -f /chemin/vers/test_connexion.hpl - Vérifiez que la base de données est joignable : ping hote-base-de-donnees - Vérifiez les détails de connexion dans hop-config.json . - Si vous utilisez des variables d'environnement, assurez-vous qu'elles sont correctement définies. ### Erreurs de mémoire insuffisante Symptôme : le pipeline s'interrompt avec « java.lang.OutOfMemoryError ». Cause : mémoire tas insuffisante pour de gros volumes de données. Récupération : - Augmentez la taille du tas dans setenv.sh : HOP_OPTS="-Xmx4096m" - Redémarrez Hop. - Optimisez le pipeline : réduisez les tampons de lignes, augmentez les tailles de lots ou divisez les grosses transformations. ### Fichiers d'entrée manquants Symptôme : la transformation échoue avec « Fichier introuvable ». Cause : fichier déplacé, supprimé ou chemin incorrect. Récupération : - Vérifiez l'existence du fichier : ls -l /chemin/vers/fichier - Vérifiez la configuration du pipeline pour le chemin correct du fichier. - Si le fichier est attendu, restaurez-le à partir d'une sauvegarde ou réexécutez le processus en amont. ### Erreurs spécifiques aux transformations Exemple : une transformation « Sortie table » échoue avec une violation de clé dupliquée. Cause : contrainte de clé primaire dans la table cible. Récupération : - Identifiez les lignes dupliquées. - Utilisez la transformation « Insérer/Mettre à jour » de Hop au lieu de « Sortie table » pour gérer les upserts. - Ou nettoyez les données source pour supprimer les doublons. ## Liste de contrôle des opérations Utilisez cette liste de contrôle pour des opérations Apache Hop sécurisées. Chaque élément comprend un responsable et une fréquence de révision.
| Action | Responsable | Fréquence | Vérification |
|---|---|---|---|
| Sauvegarder la configuration de Hop | Ingénieur DevOps | Quotidienne | Le fichier de sauvegarde existe et sa taille > 0 |
| Vérifier la santé du serveur Hop | Responsable des opérations | Horaire | ./hop-server.sh --status renvoie en cours d'exécution |
| Surveiller les échecs de pipeline | Ingénieur de données | Continue | Alerte en cas de code de sortie non nul |
| Examiner les erreurs de journal | Ingénieur DevOps | Hebdomadaire | Aucune nouvelle erreur critique |
| Tester les connexions aux bases de données | Responsable des opérations | Quotidienne | Le pipeline de test s'exécute avec succès |
| Mettre à jour la documentation de l'environnement | Rédacteur technique | Mensuelle | La documentation reflète les paramètres actuels |