Apache Hop 101, introduction et installation

Apache Hop 101, introduction et installation

Vous appréciez notre travail......nous recrutons !

Ne ratez pas nos articles sur l'open source, le big data et les systèmes distribués, fréquence faible d’un email tous les deux mois.

Apache Hop est un outil d’ETL (Extract Transform and Load) conçue pour rendre le développement de pipelines intuitif, maintenable et évolutif.

Initialement issue d’un “fork” de Pentaho Data Integration (PDI ou Kettle), Apache Hop a depuis évolué indépendamment. Malgré quelques différences, il reste néanmoins quelques points communs avec PDI, ce qui en fait un atout pour les utilisateurs de PDI.

La plateforme d’orchestration des données et de data engineering permet non seulement aux data engineers de concevoir des workflows et des pipelines à partir d’une interface utilisateur, mais il prend aussi en charge le contrôle de version grâce à une architecture basée sur des fichiers et une intégration transparente avec la technologie Git.

Il est possible d’étendre les fonctionnalités de Hop en y ajoutant des plugins, notamment les moteurs de pipeline et de workflow, les bases de données, et d’autres composants. Ce qui en fait un système flexible.

Etract Load and Transform

Kettle/PDI et Hop

Les deux projets partagent des concepts similaires, rendant l’utilisation de Hop quasiment intuitif pour les utilisateurs de PDI. De plus, malgré certaines limitations, les projets PDI peuvent être importés dans Hop. Ce qui facilite considérablement la transition de projets PDI vers Hop.

La page Hop vs. Kettle apporte plus de détails sur la comparaison entre les deux solutions et sur le mode de transfert de projets PDI vers Hop.

Intégration avec Git

Apache Hop s’intègre avec Git pour permettre le contrôle de version, ce qui améliore la gestion des projets. Cela peut être effectué via la ligne de commande ou directement depuis l’interface graphique de Hop. Par exemple, la barre d’outils « File Explorer » dans l’interface inclut des options Git, permettant ainsi de gérer facilement les versions des pipelines et workflows. Cela permet aussi de gérer des processus d’intégration et de déploiement continus (CI/CD).

Apache Airflow propose également une approche similaire pour le contrôle de version et l’intégration CI/CD.

Interface visuelle conviviale

L’interface utilisateur de Hop est idéale pour exécuter des tâches d’orchestration des données via une plateforme intuitive. Les ingénieurs peuvent se concentrer sur la construction des pipelines et workflows sans se soucier de problématiques syntaxiques. Par ailleurs, les workflows et pipelines peuvent être exécutés de différentes façons, notamment via le serveur Hop en local ou à distance. En outre, les pipelines peuvent être exécutés sur Apache Beam avec divers moteurs d’exécution, notamment Apache Spark et Apache Flink. Pour plus de détails sur Apache Beam, consultez cet article d’Adaltas.

Extensibilité via les plugins

Il existe des plugins intégrés ainsi qu’une collection de plugins supplémentaires utilisables avec Apache Hop mais non inclus par défaut. Ceux-ci sont disponibles dans le dépôt GitHub Hop Plugins. Les plugins permettent d’étendre les fonctionnalités de Hop et peuvent être personnalisés selon des cas d’usage spécifiques.

Architecture de Hop

Interface utilisateur de Hop

Hop GUI est une interface visuelle utilisée pour créer, contrôler, et gérer des workflows et des pipelines. Elle permet aussi de surveiller leur exécution, de détecter et corriger les erreurs. Elle déplace l’orchestration des données d’une logique basée sur du code vers une approche visuelle et conviviale.

Hop Web

Hop Web offre une expérience similaire à Hop GUI accessible depuis un navigateur web. Cela permet un développement à distance, une collaboration simplifiée et une compatibilité multiplateforme sans nécessiter une installation locale. De plus, l’interface web garantit à tous les utilisateurs une même version de plateforme, éliminant ainsi les incohérences de version au sein des équipes.

Hop Server

Hop Server est un serveur léger permettant de gérer et d’exécuter des workflows et pipelines à l’aide de configurations d’exécution de type « Remote pipeline » ou « Remote workflow ».

Projets et environnements

Les projets sont des regroupements incluant des workflows, des pipelines, des objets de métadonnées et des variables. Un projet peut être associé à un ou plusieurs environnements.

Les environnements, quant à eux sont assignés à un projet donné. Ils sont utilisés principalement pour les configurations d’exécution contextuelle et autres métadonnées liés au projet.

Workflows and pipelines

Les workflows et pipelines constituent les blocs fondamentaux dans Hop.

Un pipeline traite directement les données par le biais d’opérations telles que le nettoyage, l’enrichissement ou l’écriture. En revanche, un workflow est conçu pour orchestrer une séquence de tâches ou d’actions, lesquelles peuvent inclure l’exécution de pipelines.

Un pipeline est composé d’une ou plusieurs “transforms” reliées par des “hops”, formant un réseau à travers lequel les données circulent d’une transformation à une autre. Chaque transformation représente une unité de traitement qui exécute une tâche spécifique : lire depuis une source de données, écrire dans une base de données ou un entrepôt de données, exécuter un script SQL, etc. Lors de l’exécution d’un pipeline, toutes les transformations sont exécutées en parallèle.

Un workflow, quant à lui, est constitué d’actions reliées par des “hops”. Contrairement aux pipelines qui agissent directement sur les données, les workflows orchestrent des opérations comme l’exécution d’autres workflows, de pipelines, la gestion de fichiers distants, ou l’envoi de notifications. Un workflow commence par un point de départ défini et peut inclure un ou plusieurs points de fin. Par défaut, les actions dans un workflow sont exécutées de manière séquentielle : chaque action n’est exécutée qu’une fois la précédente terminée. Chaque action représente une tâche spécifique : par exemple exécuter un autre workflow, un pipeline, gérer des fichiers ou envoyer des alertes. Une fois son exécution terminée, une action retourne un code de sortie qui est une valeur booléenne. Ce code de sortie peut être utilisé pour contrôler l’étape suivante dans le workflow.

Dans les pipelines comme dans les workflows, les “hops” définissent le flux d’exécution. Dans les pipelines, ils relient les transforms. Dans les workflows, ils relient les actions.

Pour en savoir plus sur les concepts clés d’Apache Hop, consultez la documentation officielle et explorez son architecture en détail ici.

Configuration de l’environnement

Prérequis

Docker doit être installé. Si ce n’est pas le cas, veuillez suivre le guide getting started sur le site officiel de Docker pour configurer rapidement un environnement de test d’Apache Hop.

Lancer un conteneur Docker comme environnement de démonstration pour Hop

Le répertoire hop-demo est créé dans le dossier personnel, avec deux sous-répertoires : hop-web et hop-server. Un fichier Docker Compose au format YAML est ajouté dans hop-demo afin de lancer les conteneurs pour l’interface graphique web de Hop (Hop Web) ainsi que pour le serveur Hop.

mkdir -p ~/hop-demo/hop-web ~/hop-demo/hop-server
cd ~/hop-demo
cat <<EOF > compose.yaml
services:
  hop-web:
    image: apache/hop-web:latest
    container_name: hop-web
    ports:
      - "8080:8080"
    environment:
      HOP_HOME: /home/hop
      HOP_SERVER_URL: http://localhost:8080
      HOP_SERVER_PORT: 8080
      HOP_SERVER_CONTEXT_PATH: /hop
    volumes:
      - ./hop-web:/home/hop
    networks:
      - hop-network
  hop-server:
    image: apache/hop:latest
    container_name: hop-server
    ports:
      - "8081:8080"
    environment:
      HOP_HOME: /home/hop
      HOP_SERVER_URL: http://localhost:8081
      HOP_SERVER_PORT: 8080
      HOP_SERVER_CONTEXT_PATH: /hop
      HOP_SERVER_USER: demo
      HOP_SERVER_PASS: <password>
    volumes:
      - ./hop-server:/home/hop
    networks:
      - hop-network
networks:
  hop-network:
    driver: bridge
EOF

L’environnement de démonstration est créé avec Docker Compose.

docker compose up -d

Les interfaces de Hop Web et de Hop Server sont accessibles via leurs ports par défaut respectifs : 8080 pour Hop Web et 8081 pour Hop Server.

Conclusion

Apache Hop est une solution d’ETL moderne et flexible, alliant une interface visuelle intuitive, une intégration native avec Git et une architecture extensible adaptée aux besoins des data engineers. Le prochain article de cette série approfondit la création de pipelines et de workflows concrets, en exploitant les capacités de la plateforme.

Partagez cet article

Canada - Maroc - France

Nous sommes une équipe passionnée par l'Open Source, le Big Data et les technologies associées telles que le Cloud, le Data Engineering, la Data Science le DevOps…

Nous fournissons à nos clients un savoir faire reconnu sur la manière d'utiliser les technologies pour convertir leurs cas d'usage en projets exploités en production, sur la façon de réduire les coûts et d'accélérer les livraisons de nouvelles fonctionnalités.

Si vous appréciez la qualité de nos publications, nous vous invitons à nous contacter en vue de coopérer ensemble.

Support Ukrain