How-To Guides

Installer Apache Iceberg : Guide complet pour l'ingénierie des données moderne

À mesure que les architectures de données évoluent, le besoin de formats de tables robustes et conformes aux ACID devient primordial. Apache Iceberg s'est imposé comme un format de table open-source de premier plan pour les grands ensembles de données analytiques, offrant une gestion des métadonnées performante et évolutive pour les lacs de données. Que vous construisiez une architecture Lambda ou que vous vous orientiez vers un modèle Lakehouse moderne, la mise en place d'Iceberg est une étape critique. Ce guide vous accompagne tout au long du processus d'installation pour divers environnements, vous permettant ainsi de commencer à exploiter les fonctionnalités d'Iceberg telles que le voyage dans le temps, l'évolution du schéma et les suppressions au niveau des lignes.

Prérequis et configuration de l'environnement

Avant de plonger dans l'installation, il est essentiel de comprendre qu'Apache Iceberg est une bibliothèque et non un service autonome. Elle s'intègre aux moteurs de calcul existants tels qu'Apache Spark, Trino, Presto ou Flink. Par conséquent, votre environnement doit disposer d'un Environnement d'exécution Java (JRE) pris en charge. Iceberg nécessite généralement Java 11 ou Java 17, selon la version et le moteur utilisé.

Assurez-vous d'avoir Apache Maven ou Gradle installés si vous intégrez Iceberg dans un projet basé sur Java. Pour les environnements distribués, vérifiez que votre distribution Hadoop (CDH, HDP ou Apache Hadoop) est compatible avec la version d'Iceberg que vous souhaitez installer. Consultez la matrice de compatibilité officielle d'Iceberg pour éviter les incompatibilités de version entre les logiciels de votre cluster et les bibliothèques Iceberg.

Installation d'Iceberg via Maven (Projets Java/Scala)

La méthode la plus courante pour utiliser Iceberg consiste à l'ajouter en tant que dépendance dans votre outil de build. Si vous utilisez Maven, vous devez ajouter le BOM (Bill of Materials) approprié pour garantir la cohérence des versions entre tous les modules Iceberg. Ajoutez ce qui suit à votre fichier pom.xml :

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.apache.iceberg</groupId>
      <artifactId>iceberg-bom</artifactId>
      <version>1.4.3</version> <!-- Vérifiez la dernière version -->
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.apache.iceberg</groupId>
    <artifactId>iceberg-spark-runtime-3.4_2.12</artifactId> <!-- Ajustez selon votre version de Spark -->
    <version>1.4.3</version>
    <scope>provided</scope>
  </dependency>
</dependencies>

Pour les projets Scala utilisant Spark 3.4, l'ID de l'artefact se termine par -3.4_2.12. Si vous utilisez une version mineure différente de Spark, mettez à jour le suffixe en conséquence. La portée provided est utilisée car le moteur de calcul (comme Spark) fournira les classes d'exécution, évitant ainsi les conflits de jars.

Configuration d'Iceberg sur des clusters autonomes (Spark & Hadoop)

Si vous exécutez Apache Spark ou Hadoop sur un cluster (par exemple, YARN ou Kubernetes), vous ne pouvez pas vous fier uniquement aux dépendances Maven. Vous devez distribuer les jars Iceberg à tous les nœuds du cluster. La manière la plus simple de procéder est de télécharger le jar iceberg-spark-runtime depuis la page de release officielle d'Apache Iceberg.

Placez le jar téléchargé dans le répertoire jars/ de votre installation Spark. Par exemple :

cd $SPARK_HOME/jars
curl -LO https://repo1.maven.org/maven2/org/apache/iceberg/iceberg-spark-runtime-3.4_2.12/1.4.3/iceberg-spark-runtime-3.4_2.12-1.4.3.jar

Après avoir placé le jar, redémarrez votre shell Spark ou soumettez vos jobs. Vous pouvez vérifier l'installation en exécutant une commande SQL simple dans le shell Spark SQL :

CREATE TABLE default.sample_table (
  id INT,
  data STRING
) USING iceberg;

Si cette commande s'exécute sans erreur, Iceberg est correctement installé et intégré à votre environnement Spark. Vous pouvez désormais inspecter les métadonnées de la table pour confirmer que le format de table est correct.

Utilisation de Docker pour le prototypage rapide

Pour les développeurs souhaitant tester Iceberg sans mettre en place un cluster local complet, Docker offre une solution pratique. Vous pouvez lancer un environnement préconfiguré à l'aide d'images Docker officielles ou maintenues par la communauté qui incluent Spark et Iceberg. Cette approche isole les dépendances et garantit un environnement reproductible pour les tests.

Par exemple, vous pouvez extraire une image Docker ayant Iceberg préinstallé et exécuter un conteneur Spark avec les montages de volume appropriés. Cette méthode est particulièrement utile pour les pipelines CI/CD où vous devez valider les transformations de données par rapport aux tables Iceberg.

Conclusion

L'installation d'Apache Iceberg est un processus simple qui varie légèrement selon votre architecture de déploiement. En configurant correctement les dépendances dans Maven, en distribuant les jars dans les environnements de cluster ou en utilisant Docker pour des configurations rapides, vous pouvez débloquer la puissance des formats de tables ouverts. N'oubliez pas de toujours vérifier votre installation en créant une table d'exemple et en vérifiant les métadonnées. Alors que le paysage du lakehouse continue de maturer, la maîtrise de l'installation d'Iceberg est une compétence fondamentale pour tout ingénieur des données sérieux. Restez à l'écoute pour notre prochain article, où nous approfondirons les configurations avancées telles que les implémentations de catalogue et l'optimisation des performances pour les charges de travail à haut débit.

Share: