Die moderne Datenlandschaft erfordert eine neue Art von Infrastruktur – eine, die strukturierte und unstrukturierte Daten nahtlos integriert, mühelos skaliert und effiziente KI/ML-Workloads ermöglicht. Hier
In diesem Blogbeitrag werden drei leistungsstarke Tools ausführlich beschrieben, mit denen Sie Ihren aktuellen Ansatz optimieren können:
Tabular ist eine Datenplattform, die von den ursprünglichen Entwicklern von Apache Iceberg entwickelt wurde. Sie wurde entwickelt, um eine unabhängige, universelle Speicherplattform bereitzustellen, die sich mit jeder Computerschicht verbinden lässt und so die Abhängigkeit von einem Datenanbieter eliminiert. Diese Funktion ist für den modernen Datenstapel von entscheidender Bedeutung. Sie ermöglicht es Benutzern, erstklassige Computer- und Speichertools auszuwählen, ohne auf den veralteten und/oder nicht passenden Toolsatz eines bestimmten Anbieters angewiesen zu sein.
In einem (n
Diese Implementierung nutzt Icebergs S3FileIO. S3FileIO wird aus mehreren Gründen als besser angesehen als Hadoops File-IO. Einige davon haben wir bereits besprochen.
Optimiert für Cloud-Speicher : S3FileIO von Iceberg ist für die Verwendung mit Cloud-nativem Speicher konzipiert.
Verbesserter Durchsatz und minimierte Drosselung: Iceberg verwendet eine
Strikte Konsistenz: Iceberg wurde
Progressiver Multipart Upload: Icebergs S3FileIO implementiert einen
Prüfsummenüberprüfung: Iceberg ermöglicht
Benutzerdefinierte Tags: Iceberg unterstützt das Hinzufügen
Vermeidung von negativem Caching: Die FileIO-Schnittstelle in Iceberg erfordert keine so strengen Garantien wie ein Hadoop-kompatibles Dateisystem, was es ermöglicht,
Im Gegensatz dazu bietet das S3A-Dateisystem von Hadoop, das vor S3FileIO verwendet wurde, nicht das gleiche Maß an Optimierung für Cloud-Speicher. All dies, um zu sagen: Belasten Sie Ihre zukunftsorientierte Data-Lake-Infrastruktur nicht mit den Fallen der Vergangenheit.
Stellen Sie zunächst sicher, dass Ihr System die folgenden Anforderungen erfüllt:
Wenn Sie von Grund auf neu beginnen, können Sie beides mit dem
docker-compose --version
Um zu beginnen, klonen oder kopieren Sie die YAML-Datei in Tabular's
Die bereitgestellte YAML-Datei ist eine Docker Compose-Konfigurationsdatei. Sie definiert eine Reihe von Diensten und deren Konfigurationen für eine Docker-Anwendung mit mehreren Containern. In diesem Fall gibt es zwei Dienste: Spark-Iceberg und MinIO. Lassen Sie uns jeden Abschnitt aufschlüsseln:
1. Spark-Iceberg-Dienst:
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: Gibt das für den Spark-Iceberg-Dienst zu verwendende Docker-Image an. In diesem Fall wird das Image tabulario/spark-iceberg:latest verwendet.
depends_on: Gibt an, dass der Spark-Iceberg-Dienst von den Rest- und Minio-Diensten abhängig ist.
container_name: Weist dem Container einen bestimmten Namen (Spark-Iceberg) zu.
Umgebung: Legt Umgebungsvariablen für den Container fest, einschließlich Spark- und AWS-Anmeldeinformationen.
Volumes: Mountet lokale Verzeichnisse (./warehouse und ./notebooks) als Volumes innerhalb des Containers.
Ports: Ordnet Container-Ports Host-Ports zu, um auf die Spark-Benutzeroberfläche und andere Dienste zuzugreifen.
2. Minio-Dienst:
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: Gibt das Docker-Image für den MinIO-Dienst an.
container_name: Weist dem Container einen bestimmten Namen (MinIO) zu.
Umgebung: Legt Umgebungsvariablen zum Konfigurieren von MinIO fest, einschließlich der Anmeldeinformationen des Root-Benutzers.
Ports: Ordnet Container-Ports Host-Ports zu, um auf die MinIO-Benutzeroberfläche zuzugreifen.
Befehl: Gibt den Befehl zum Starten des MinIO-Servers mit bestimmten Parametern an.
Ein weiterer Aspekt des MinIO-Dienstes ist
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 "
depends_on: Gibt an, dass der MC-Dienst vom MinIO-Dienst abhängig ist.
image: Gibt das Docker-Image für den MC-Dienst an.
container_name: Weist dem Container einen bestimmten Namen (mc) zu.
Umgebung: Legt Umgebungsvariablen zum Konfigurieren des MinIO-Clients fest.
Einstiegspunkt: Definiert den Einstiegspunktbefehl für den Container, einschließlich der Einrichtungsschritte für den MinIO-Client.
/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 "
Diese Befehlsfolge führt im Wesentlichen die folgenden Aufgaben aus:
Entfernt das vorhandene Warehouse-Verzeichnis und seinen Inhalt vom MinIO-Server.
Erstellt einen neuen Bucket mit dem Namen „Warehouse“.
Legt die Zugriffsrichtlinie des Warehouse-Buckets auf „öffentlich“ fest.
Diese Docker Compose-Datei orchestriert eine Multi-Container-Umgebung mit Diensten für Spark, PostgreSQL und MinIO. Sie richtet Abhängigkeiten, Umgebungsvariablen und Befehle ein, die zum gemeinsamen Ausführen der Dienste erforderlich sind. Die Dienste arbeiten zusammen, um eine Entwicklungsumgebung für die Datenverarbeitung mit Spark und Iceberg mit MinIO als Objektspeicher-Backend zu erstellen.
Wechseln Sie in einem Terminalfenster mit cd in das Verzeichnis tabular-spark-setup im Repository und führen Sie den folgenden Befehl aus:
docker-compose up
Melden Sie sich bei MinIO unter http://127.0.0.1:9001
mit den Anmeldeinformationen admin:password
an, um zu sehen, dass der Warehouse-Bucket erstellt wurde.
Sobald alle Container einsatzbereit sind, können Sie auf Ihren Jupyter Notebook-Server zugreifen, indem Sie zu http://localhost:8888
navigieren.
Führen Sie eines der Beispiel-Notebooks aus und kehren Sie zu MinIO unter http://127.0.0.1:9001
zurück, um Ihr mit Daten gefülltes Lager zu sehen.
Dieses Tutorial zum Erstellen eines modernen Datalakes mit Iceberg, Tabular und MinIO ist nur der Anfang. Dieses leistungsstarke Trio öffnet Türen zu einer Welt voller Möglichkeiten. Mit diesen Tools können Sie alle Ihre strukturierten und unstrukturierten Daten nahtlos integrieren und analysieren, um verborgene Muster aufzudecken und datengesteuerte Entscheidungen zu treffen, die Innovationen vorantreiben. Nutzen Sie die Effizienz und Flexibilität dieser Architektur in der Produktion, um Ihre KI/ML-Initiativen zu beschleunigen und das wahre Potenzial Ihrer Modelle für maschinelles Lernen freizusetzen und so Ihren Weg zu bahnbrechenden Entdeckungen zu beschleunigen. Kontaktieren Sie uns unter