Le paysage des données moderne exige un nouveau type d’infrastructure, une infrastructure qui intègre de manière transparente les données structurées et non structurées, qui évolue sans effort et qui permet des charges de travail d’IA/ML efficaces. C'est ici que
Cet article de blog approfondit trois outils puissants qui peuvent optimiser votre approche actuelle :
Tabular est une plate-forme de données créée par les créateurs originaux d'Apache Iceberg. Il est conçu pour fournir une plate-forme de stockage indépendante et universelle qui se connecte à n'importe quelle couche de calcul, éliminant ainsi la dépendance vis-à-vis du fournisseur de données. Cette fonctionnalité est essentielle à la pile de données moderne, elle permet aux utilisateurs de choisir les meilleurs outils de calcul et de stockage sans être obligés d'utiliser l'ensemble d'outils obsolètes et/ou incompatibles d'un fournisseur particulier.
Dans un
Cette implémentation exploite S3FileIO d'Iceberg. S3FileIO est considéré comme meilleur que file-io de Hadoop pour plusieurs raisons. dont nous avons déjà parlé
Optimisé pour le stockage cloud : S3FileIO d'Iceberg est conçu pour fonctionner avec le stockage cloud natif.
Débit amélioré et limitation minimisée : Iceberg utilise un
Cohérence stricte : Iceberg a été
Téléchargement progressif en plusieurs parties : S3FileIO d'Iceberg implémente un
Vérification de la somme de contrôle : Iceberg permet
Balises personnalisées : Iceberg prend en charge l'ajout
Évitement de la mise en cache négative : l'interface FileIO d'Iceberg ne nécessite pas de garanties aussi strictes qu'un système de fichiers compatible Hadoop, ce qui lui permet de
En revanche, le S3A FileSystem de Hadoop, utilisé avant S3FileIO, n'offre pas le même niveau d'optimisation pour le stockage cloud. Tout cela pour dire : n'entravez pas votre infrastructure de lac de données tournée vers l'avenir avec les pièges du passé.
Avant de commencer, assurez-vous que votre système répond aux exigences suivantes :
Si vous partez de zéro, vous pouvez installer les deux à l'aide du
docker-compose --version
Pour commencer, clonez ou copiez le fichier YAML dans Tabular's
Le fichier YAML fourni est un fichier de configuration Docker Compose. Il définit un ensemble de services et leurs configurations pour une application Docker multi-conteneurs. Dans ce cas, il existe deux services : Spark-Iceberg et MinIO. Décomposons chaque section :
1. Service Spark-Iceberg :
spark-iceberg: image: tabulario/spark-iceberg container_name: spark-iceberg build: spark/ networks: iceberg_net: depends_on: - rest - minio volumes: - ./warehouse:/home/iceberg/warehouse - ./notebooks:/home/iceberg/notebooks/notebooks environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 ports: - 8888:8888 - 8080:8080 - 10000:10000 - 10001:10001 rest: image: tabulario/iceberg-rest container_name: iceberg-rest networks: iceberg_net: ports: - 8181:8181 environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 - CATALOG_WAREHOUSE=s3://warehouse/ - CATALOG_IO__IMPL=org.apache.iceberg.aws.s3.S3FileIO - CATALOG_S3_ENDPOINT=http://minio:9000
image : Spécifie l'image Docker à utiliser pour le service spark-iceberg. Dans ce cas, il utilise l'image tabulario/spark-iceberg:latest.
depend_on : Spécifie que le service spark-iceberg dépend des services rest et minio.
containers_name : attribue un nom spécifique (spark-iceberg) au conteneur.
environnement : définit les variables d'environnement pour le conteneur, y compris les informations d'identification Spark et AWS.
volumes : monte les répertoires locaux (./warehouse et ./notebooks) en tant que volumes à l'intérieur du conteneur.
ports : mappe les ports du conteneur sur les ports hôtes pour accéder à l'interface utilisateur Spark et à d'autres services.
2. Service Mini :
minio: image: minio/minio container_name: minio environment: - MINIO_ROOT_USER=admin - MINIO_ROOT_PASSWORD=password - MINIO_DOMAIN=minio networks: iceberg_net: aliases: - warehouse.minio ports: - 9001:9001 - 9000:9000 command: ["server", "/data", "--console-address", ":9001"]
image : Spécifie l’image Docker pour le service MinIO.
nom_conteneur : attribue un nom spécifique (MinIO) au conteneur.
environnement : définit les variables d'environnement pour la configuration de MinIO, y compris les informations d'identification de l'utilisateur root.
ports : mappe les ports du conteneur sur les ports hôtes pour accéder à l’interface utilisateur MinIO.
command : Spécifie la commande pour démarrer le serveur MinIO avec des paramètres spécifiques.
Un autre aspect du service MinIO est
mc: depends_on: - minio image: minio/mc container_name: mc networks: iceberg_net: environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 entrypoint: > /bin/sh -c " until (/usr/bin/mc config host add minio http://minio:9000 admin password) do echo '...waiting...' && sleep 1; done; /usr/bin/mc rm -r --force minio/warehouse; /usr/bin/mc mb minio/warehouse; /usr/bin/mc policy set public minio/warehouse; tail -f /dev/null "
depend_on : Spécifie que le service mc dépend du service MinIO.
image : Spécifie l'image Docker pour le service mc.
nom_conteneur : attribue un nom spécifique (mc) au conteneur.
environnement : définit les variables d'environnement pour configurer le client MinIO.
point d'entrée : définit la commande de point d'entrée pour le conteneur, y compris les étapes de configuration pour le client MinIO.
/usr/bin/mc rm -r --force minio/warehouse; /usr/bin/mc mb minio/warehouse; /usr/bin/mc policy set public minio/warehouse; tail -f /dev/null "
Cette séquence de commandes effectue essentiellement les tâches suivantes :
Supprime le répertoire d'entrepôt existant et son contenu du serveur MinIO.
Crée un nouveau bucket nommé Warehouse.
Définit la stratégie d'accès du bucket d'entrepôt sur publique.
Ce fichier Docker Compose orchestre un environnement multi-conteneurs avec des services pour Spark, PostgreSQL, MinIO. Il configure les dépendances, les variables d'environnement et les commandes nécessaires à l'exécution des services ensemble. Les services fonctionnent en tandem pour créer un environnement de développement pour le traitement des données en utilisant Spark et Iceberg avec MinIO comme backend de stockage d'objets.
Dans une fenêtre de terminal, accédez au répertoire tabular-spark-setup du référentiel et exécutez la commande suivante :
docker-compose up
Connectez-vous à MinIO à http://127.0.0.1:9001
avec les informations d'identification admin:password
pour voir que le compartiment d'entrepôt a été créé.
Une fois que tous les conteneurs sont opérationnels, vous pouvez accéder à votre serveur Jupyter Notebook en accédant à http://localhost:8888
Exécutez l'un des exemples de blocs-notes et revenez à MinIO à l' http://127.0.0.1:9001
pour voir votre entrepôt rempli de données.
Ce didacticiel sur la création d'un datalake moderne avec Iceberg, Tabular et MinIO n'est que le début. Ce trio puissant ouvre les portes sur un monde de possibilités. Avec ces outils, vous pouvez intégrer et analyser en toute transparence toutes vos données, structurées et non structurées, pour découvrir des modèles cachés et prendre des décisions basées sur les données qui alimentent l'innovation. Tirez parti de l’efficacité et de la flexibilité de cette architecture en production pour accélérer vos initiatives d’IA/ML et libérer le véritable potentiel de vos modèles d’apprentissage automatique, accélérant ainsi votre chemin vers des découvertes révolutionnaires. Contactez-nous à