# Apache HOP : la genèse

Apache Hop est né de la volonté de moderniser et de prolonger l’héritage de Pentaho Data Integration (PDI, aussi appelé Kettle), un ETL (*) open source largement utilisé mais dont l’évolution s’était nettement ralentie après son rachat par Hitachi en 2015. 

Un groupe d’experts et d’anciens contributeurs de PDI a alors lancé en 2019 un projet indépendant, avec pour objectif de repenser l’architecture et d’apporter des innovations attendues par la communauté. 

En 2020, le projet a ainsi rejoint l’incubateur de la fondation Apache, puis est devenu un projet Apache à part entière en 2021, avec l’ambition de proposer un outil d’intégration de données entièrement open source, multi plateformes, flexible et pérenne, et adapté aux enjeux actuels de la data.

Rappelons aussi que depuis la version 10.2, Pentaho Data Integration a changé de licence et n’est désormais plus utilisable en production dans sa version communautaire

(*) Un ETL (Extract, Transform, Load) est un processus informatique qui permet de collecter des données depuis différentes sources (Extract), de les nettoyer et structurer pour les rendre exploitables (Transform), puis de les charger dans un système cible (Load), comme une base de données ou un entrepôt de données. C’est une étape clé pour analyser et utiliser efficacement les données dans les entreprises.

# Apache HOP, un ETL puissant et facile d’accès

Apache Hop est une plateforme d’intégration de données moderne qui se distingue par sa simplicité d’utilisation et sa grande flexibilité. 

Apache HOP répondra à tous vos besoins d’intégration des données en offrant : 

  • des fonctionnalités d’extraction puissantes (Extract) : bases de données, fichiers (CSV, Excel, XML,…), API, web services, annuaires LDAP… sans aucun codage spécifique, ce qui facilite la maintenance.
  • des fonctionnalités de transformation (Transform), nombreuses et parfaitement adaptées à la préparation des données : nettoyage, normalisation et standardisation, agrégation et calculs, enrichissement des données (jointure sur des flux hétérogènes)
  • des fonctionnalités de chargement (Load) : injection dans les cibles, en mode delta ou annule & remplace, avec gestions des erreurs d’insertion. Et bien sûr, la planification et l’automatisation des traitements

Concrètement, HOP permet de concevoir des traitements de données via une interface graphique claire et simple d’emploi, puis de les exécuter partout : sur un poste de travail, un serveur, dans le cloud ou encore dans un environnement conteneurisé comme Kubernetes. 

Conçu dès le départ pour s’intégrer dans des démarches agiles et DevOps, Hop facilite la mise en production rapide de nouveaux flux de données et leur industrialisation. Sa philosophie « un seul design, utilisable partout » répond aux enjeux actuels de rationalisation des coûts, de fiabilité et d’agilité, tout en garantissant une forte indépendance vis-à-vis des éditeurs propriétaires.

# Caractéristiques principales

Les caractéristiques principales de Apache HOP sont les suivantes

  • Interface Utilisateur Graphique (GUI):  Apache HOP offre une interface graphique conviviale qui permet aux utilisateurs de concevoir des flux de données sans avoir besoin de coder. L’interface utilisateur intuitive permet de réduire considérablement le temps nécessaire pour développer et déployer des processus ETL.
  • Pipelines et workflows : deux types de traitement peuvent être mis en œuvre dans HOP, ce qui permet une gestion efficiente des projets de grande ampleur.
    • Les pipelines correspondent aux traitements effectifs sur les données, et s’inscrivent pleinement dans l’acronyme ETL “Extraire, Transformer, Charger (Load)”. Ainsi les pipelines permettent d’extraire des données depuis une grande variété de sources (bases de données, fichiers, API…), de transformer ces données selon des règles métiers, puis de charger celles-ci vers une cible (par exemple un entrepôt de données). 
    • Les workflows agissent comme des scénarios d’orchestration : ils permettent de définir l’ordre d’exécution de plusieurs pipelines, d’ajouter des conditions, des validations ou encore des contrôles d’erreurs. 
  • Support multi-environnement : Apache Hop est basé sur un moteur java, et fonctionne sur Windows, Linux et Mac
  • Scalabilité et temps réel : grâce à ses capacités de traitement par lots et en temps réel, PDI peut gérer des volumes de données importants de manière efficace. L’outil est capable de s’adapter à des charges de travail de grande envergure grâce à son architecture flexible.
  • Rapidité de déploiement : HOP permet une mise en œuvre rapide des processus ETL, ce qui est crucial pour les projets nécessitant une livraison rapide. Il s’intègre parfaitement à des architectures cloud
  • Journalisation et Surveillance : HOP fournit des outils pour la journalisation et la surveillance des tâches ETL, facilitant ainsi le suivi et la résolution des problèmes.

Vous pouvez découvrir le fonctionnement de HOP dans le webinar de présentation que nous avons donné au printemps 2024 :

# Les différences majeures avec Pentaho Data Integration (PDI)

D’un point de vue du développeur, passer de PDI à Apache HOP se fait de manière assez aisée. En effet, Apache HOP propose en effet un fonctionnement très similaire à PDI, malgré tout il faut retrouver ses repères dans le studio de conception “Hop-Gui”, qui a été entièrement revu, et aussi s’habituer à la nouvelle ergonomie proposée.

# 1/ Le nommage des traitements, des outils et des composants HOP

  • Les transformations PDI (.ktr) deviennent des pipelines dans HOP (.hpl) et les tâches/jobs (.kjb) deviennent des workflow (.hwf). 
  • De manière plus générale, voici l’ensemble des renommages effectués lors du fork PDI vers HOP
Composant / OutilNom dans PDINouveau nom dans HOP
Client graphique de développement (desktop)SpoonHOP GUI
Programme d’exécution en mode batchKitchen et PanHOP Run
Serveur pour l’exécution à distanceCarteHOP Server
Outil de chiffrement des mots de passeEncrHOP Encrypt
Outil de recherche de métadonnéesinexistantHOP Search
Outil de configuration en ligne de commandeinexistantHOP Conf
Outil de traductioninexistantHOP Translate

# 2/ La gestion centralisée des projets et des environnements

Dans Apache HOP, il est possible de créer des projets séparés : ce concept n’existait pas dans PDI.

Basiquement cela revient à définir un emplacement (dossier) qui sera accessible directement depuis Apache Hop pour faciliter l’accès à l’ensemble des pipelines et workflow du projet ainsi que de leur paramétrage. Ceci permet une gestion aisée des projets, notamment sur le cycle de vie (passage recette vers production) et de rendre “projet spécifiques” certains paramètres (Connexion BDD, variables) via les métadonnées et fichiers de configurations. Grâce à cela une nouvelle variable interne fait son apparition (PROJECT_HOME) qui contient le chemin d’accès au dossier racine du projet et permet des chemins relatifs simples (Cette variable est la descendante de la variable interne PDI : Internal.Entry.Current.Directory).

La fonctionnalité “projet” s’accompagne de la notion d’environnements. Il est désormais très simple de définir des variables et des paramètres propres à chaque environnement d’exécution (développement, recette, production). Ceci remplace et améliore nettement  la logique de variabilisation et d’initialisation des variables au lancement des traitements qui existait dans PDI : elle devait être effectuée de façon manuelle, soit via l’utilisation du fichier “kettle.properties”, soit via la définition de fichiers de propriétés propres aux traitements, les variables étant instanciées au début du job principal.

# 3/ Les métadonnées

Dans HOP Gui,  la perspective “metadata” permet de centraliser l’ensemble des objets de configuration réutilisables. C’est une avancée majeure par rapport à PDI, où beaucoup d’informations devaient être redéfinies dans les transformations (ou à minima variabilisées).

Dans HOP, l’ensemble des paramètres sont centralisés dans des descripteurs de métadonnées, que tous les pipelines et workflows peuvent partager.

Ainsi, les métadonnées permettent de centraliser un grand nombre d’informations : les connexions aux bases de données, la définition et configuration des moteurs (local, spark, beam…), les variables globales et configurations de logging, etc…

# 4/ Intégration native Apache Beam

L’une des innovations majeures d’Apache Hop est son intégration native du moteur d’exécution Apache Beam, un framework open source conçu par Google et désormais incubé par la fondation Apache. 

Là où PDI exécute tous ses traitements sur un moteur unique en java, Hop permet de définir le moteur d’exécution au moment du déploiement, sans modifier le pipeline.

De façon concrète, Apache Beam agit comme une couche d’abstraction universelle entre les pipelines Hop et les moteurs de calcul distribués. Cela signifie qu’un même pipeline Hop peut être exécuté :

  • en local pour les phases de test ou de développement,
  • sur Apache Spark, Apache Flink ou Google Cloud Dataflow pour des traitements distribués à grande échelle,
  • ou encore dans un environnement cloud ou Kubernetes pour bénéficier d’élasticité et de scalabilité.

Cette approche « write once, run anywhere » permet aux data-engineers de concevoir un pipeline une seule fois puis de le déployer sur l’environnement le plus adapté à leur volumétrie et à leurs contraintes de performance.

En pratique, Hop enrichit cette intégration avec un ensemble de “Beam Transforms” spécifiques (Beam Input, Beam Output, Beam Timestamp, Beam GroupBy…) qui exploitent la puissance du moteur Beam pour traiter des flux massifs ou temps réel.

# 5/ Observabilité et gouvernance des traitements renforcées

Là où PDI proposait un système de logs et d’audit basique, souvent configuré manuellement dans chaque transformation, Apache Hop introduit une approche beaucoup plus structurée et centralisée.

Grâce à la métadonnée de logging, les paramètres de suivi (base de logs, fichiers, niveau de détail, historisation, etc.) peuvent être définis une seule fois et appliqués automatiquement à tous les pipelines et workflows d’un projet. 

Tout comme PDI, Hop permet également de tracer les exécutions (succès, erreurs, temps d’exécution, ressources utilisées) et de monitorer les traitements via son interface ou des outils externes. Cette vision unifiée du suivi et de la qualité des traitements rapproche Hop des standards modernes de data observability et de gouvernance technique, là où PDI restait limité à une logique de supervision locale et manuelle.

# 6/ L’injection de métadonnées

Le principe d’injection de métadonnées existait déjà dans Pentaho Data Integration (PDI), mais Apache Hop l’a largement simplifié, fiabilisé et généralisé.

L’injection de métadonnées (ou metadata injection) est une technique qui permet de générer dynamiquement des pipelines en fonction de paramètres ou de structures de données externes.

Concrètement, cela consiste à alimenter un pipeline modèle (“template”) avec des valeurs d’entrée (listes de colonnes, règles, chemins, paramètres…) pour créer et exécuter automatiquement des traitements personnalisés sans devoir dupliquer les pipelines.

Ce mécanisme permet de configurer dynamiquement les pipelines HOP afin que ceux-ci s’adaptent aux structures de données à traiter. Il s’agit d’un mécanisme très puissant que nous avons mis en œuvre sur le projet EREBIA pour le CHU de Dijon

# 7/ Intégration native avec le monde DevOps et Cloud

Apache Hop a été conçu dès le départ pour s’intégrer dans les pipelines CI/CD :

  • stockage des pipelines au format XML (comme PDI), et des configurations au format JSON (nouveau)
  • exécution possible en ligne de commande, sous forme de conteneur Docker, ou dans Kubernetes,

Là où PDI restait un outil ETL classique (de type desktop), Hop devient un ETL cloud-native, prêt pour les architectures modernes et les déploiements automatisés.

A ce titre, un conteneur Docker officiel est mis à disposition : https://hop.apache.org/tech-manual/latest/docker-container.html

La mise à disposition de Helm Chart pour le déploiement sous Kubernetes est également en cours de préparation par la communauté.

Chez Atol CD, nous avons déjà réalisé des déploiements HOP sous forme de conteneurs, notamment pour l’un de nos clients sur une plateforme Kubernetes (Projet Plat’AU – Ministère de l’écologie)

Ce sujet vous intéresse ? Vous avez un projet Data ?
Pour toute question ou demande, n’hésitez pas à nous solliciter: contact@atolcd.com

Et ne manquez pas notre prochain article : “Réussir sa migration Pentaho Data Integration (PDI) vers Apache Hop”