Containerisierung Ihrer Talend-Jobs mit nur einem Klick

Containerisierung Ihrer Talend-Jobs mit nur einem Klick

  • Edward Ost
    Over 25 years of experience in application and web development with extensive experience on both Java and .NET platforms. Ed works as the Channels Technical Director at Talend working with technology partners, commercial use customers, and SI partners in the Talend ecosystem. Current focus is on enterprise integration strategies spanning DW, Data Lake, and operational decision support systems using the Talend Unified Platform.

Der folgende Blogbeitrag ist Teil einer Serie über serverlose Architektur und Container. Der erste Post dieser Reihe beschäftigte sich mit dem Effekt von Containern auf DevOps.

Talend Data Integration ist eine auf Unternehmen ausgerichtete Datenintegrationsplattform, die eine visuelle Designoberfläche bietet und das Generieren von einfachem Java-Code ermöglicht. Der schlanke, modulare Designansatz eignet sich ideal für die Containerisierung. In diesem Blogpost lernen Sie Schritt für Schritt, wie Sie Ihren Talend-Job mit nur einem Mausklick containerisieren. Alle in diesem Post gezeigten Codebeispiele finden Sie auch in unserem Talend Job2Docker Git-Repository. Die Git-Readme-Datei enthält ebenfalls eine Schritt-für-Schritt-Anleitung.

Build mit Job2Docker erstellen

Job2Docker besteht im Wesentlichen aus zwei Teilen. Der erste Teil ist ein sehr einfaches Bash-Skript, mit dem Sie Ihre Zip-Datei, die den Talend-Job enthält, als Docker-Image paketieren. Während des Paketierungsschritts verändert das Skript den Startbefehl des Talend-Jobs so, dass dieser als PID 1 ausgeführt wird. Ansonsten bleibt der Job völlig unverändert. Durch die Definition als PID 1 ist der Talend-Job nun der einzige Job im Container. Dieses Verfahren entspricht dem Grundprinzip und den Best Practices von Docker. Wenn Sie anschließend eine Container-Instanz erstellen, wird der Talend-Job automatisch ausgeführt. Nach Beendigung des Jobs wird der Job geschlossen. Dabei ist Ihre Anwendungslogik von der Rechen-Infrastruktur für das Hosting sicher abgekoppelt. So können Sie nun mit Tools zur Container-Orchestrierung wie Kubernetes, OpenShift, Docker Swarm, EC2 Container Services oder Azure Container Instances Ihre Job-Container effizient verwalten. Dadurch profitieren Sie von einer größeren Flexibilität und geringeren Gesamtbetriebskosten (TCO) – unabhängig davon, ob Sie den Vorgang in der Cloud oder lokal ausführen.

Job2Docker ausführen

Der zweite Teil von Job2Docker besteht aus einem schlichten Dienstprogramm-Job, der in Talend selbst geschrieben wird und ein freigegebenes Verzeichnis überwacht. Er bewirkt Folgendes: Wenn Sie in Studio einen Job-Build erstellen und in dieses Verzeichnis stellen, ruft der Job2Docker-Listener das Jobpaketierungs-Skript auf, welches das Docker-Image erstellt.

Zur Ausführung der Beispieldateien benötigen Sie lediglich eine Instanz von Talend Studio 7.0.1 (hier zum kostenlosem Download verfügbar) und einen Server mit aktivem Docker.

  • Wenn Sie Studio unter Linux ausführen, genügt es, Docker zu installieren und ein Verzeichnis auszuwählen, in dem Ihre Talend-Jobs für Docker freigegeben sind.
  • Wenn Sie Studio unter Windows ausführen, können Sie entweder Docker unter Windows starten oder Linux auf einer VM installieren.

Die hier präsentierten Beispieldateien wurden auf einer Linux-VM ausgeführt, wobei Talend Studio auf dem Host-Betriebssystem unter Windows lief. Damit Studio und Docker Daten austauschen können, müssen Sie mit dem VT-Tool Ihrer Wahl einen Ordner freigeben.

Nach Installation dieser Job2Docker-Skripts und des Docker-Listeners ist der neue Workflow auch für den Studio-Benutzer transparent.

1. Starten Sie den Job “Job2Docker_listener“, der das freigegebene Verzeichnis überwacht.

2. Klicken Sie in Talend Studio auf “Build”. Es wird eine Zip-Datei mit dem Talend-Job erstellt. Mehr brauchen Sie erst einmal nicht zu tun.

3. Der Talend-Job “Job2Docker_listener“ stößt das Skript “Job2Docker“ an. Dieses wandelt die Zip-Datei von Talend in eine .tgz-Datei um, die von Docker verarbeitet werden kann.

4. Der Job “Job2Docker_listener“ stößt das Skript “Job2Docker_build“ an und dieses erstellt wiederum ein Docker-Image.

5. Erstellen Sie mit dem Docker-Befehl “Run“ einen Container. Nun wird Ihr Job automatisch ausgeführt.

Das Job2Docker-Repository enthält einige einfache Hello-World-Beispiele sowie eine Anleitung, die erklärt, wie Sie ohne viel Aufwand Parameter an Ihren Job übergeben können. Außerdem ist auf YouTube für den ganzen Vorgang eine Schritt-für-Schritt-Videoanleitung verfügbar.

Das erstellte Docker-Image können Sie in der Docker-Registry Ihrer Wahl veröffentlichen und dann die containerisierte Anwendung im Rahmen eines Continuous-Integration-Workflows bereitstellen.

So trügerisch einfach dieser Vorgang auch aussehen mag – er ist extrem wichtig, um Workflows in großem Umfang zu verwalten. In unserem nächsten Blogpost zeigen wir Ihnen deshalb genau das: wie Sie mehrere containerisierte Jobs mit Tools wie Kubernetes, EC2 Container Services, Fargate oder Azure Container Instances orchestrieren.

An der Diskussion teilnehmen

0 Comments

Hinterlasse eine Antwort

Your email address will not be published. Required fields are marked *