Datengesteuertes Workflow-Management - AWS-Datenpipeline im Vergleich zu Glue- und Lambda-Funktionen

Sie können feststellen, dass es in AWS-Blogs eine beträchtliche Anzahl von Posts zu Daten-Pipelines, zum Einrichten automatisierter ETL-Jobs, zum Automatisieren von Workflows usw. gibt. Sie können jedoch auch feststellen, dass diese Posts entweder veraltet sind oder die entscheidenden Details fehlen, die Sie in Ihrem gesamten Blog benötigen trainieren.

Ich hielt es für eine gute Idee, meine Erkenntnisse zu teilen und Ihre Gedanken zu den beiden Möglichkeiten des datengesteuerten Workflow-Managements zu äußern.

Zunächst möchte ich Sie auf die AWS Data Pipeline aufmerksam machen, die äußerst fehlertolerant, zuverlässig und benutzerfreundlich ist. Sie können benutzerdefinierte Anwendungen / Shell-Befehle auf EC2-Instanzen ausführen, Spark / Hive / Pig-Jobs auf transienten EMR-Clustern ausführen, Daten zwischen lokalen und Cloud-Umgebungen übertragen.

Die Möglichkeit, Shell-Befehle auszuführen, öffnet die Tür zum Auslösen / Konfigurieren aller aws-Dienste mithilfe von aws-cli. Scheint das nicht großartig zu sein?

Auf der anderen Seite scheint Glue with Lambda anstelle von „Data Pipeline“ vorzuziehen zu sein, wenn Sie Daten zwischen AWS-Services verschieben und transformieren.

AWS Glue ist der vollständig verwaltete ETL-Service und AWS Lambda ist eine ereignisgesteuerte, serverlose Computerplattform von AWS.

Mit AWS Glue können Sie die Metadaten unstrukturierter Daten crawlen, das Datenschema durchsuchen, Ihren Datenkatalog als Tabelle haben, die Daten in AWS Athena anzeigen (SQL Query Engine). Sie können ETL-Jobs (Python) erstellen Verwenden Sie erweiterte Spark-Funktionen, die als GlueContext bereitgestellt werden. Wenn die Automatisierung berücksichtigt wird, können alle diese Funktionen von Lambda-Funktionen ausgelöst / erstellt werden, die möglicherweise von Ereignissen wie „S3 Put Event“ (eine Datei wird in einen S3-Bucket verschoben) ausgelöst werden. Sie können diese Lambda-Funktionen und Klebejobs einfügen in Step-Funktionen für einen Workflow mit detaillierten Überprüfungen (z. B. Überprüfen, ob der Klebejob mit einer Lambda-Funktion abgeschlossen ist, oder Auslösen einer anderen Lambda-Funktion, um einen Klebejob erneut auszuführen).

Sie können den folgenden Link auschecken: https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html.

Wenn Sie Node.js oder eine andere Umgebung für Lambda verwenden möchten, können Sie außerdem https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Glue.html besuchen

Anstatt sich auf ein Produkt zu verlassen, können Sie mit Ihren Mikrodiensten flexibel Ihren eigenen Kontrollmechanismus für Ihren Workflow entwickeln. Klebecodes und Lambda-Funktionen erleichtern Ihnen den Aufbau der CI / CD-Pipeline. Sie können eine „Daten-Pipeline“ mit Lambda-Funktionen erstellen / auslösen und diese Lambda-Funktion in Ihre Codebasis einfügen. Sie werden jedoch feststellen, dass dies nicht sehr effizient und benutzerfreundlich ist. Sie können die Konfiguration (Datenknoten, Aktivitäten, die) schreiben sind die zu erledigenden aufgaben, voraussetzungen etc.) im json format oder klonen sie aus einer vorhandenen pipeline. aber ich finde es relativ mühsam.

Sie können Entwicklungsendpunkte haben, mit denen Sie Sagemaker / Zeppelin-Notizbücher verwenden können, um Ihre Daten zu untersuchen, die Glue-Crawler-Ausgabe mit dem Spark-Datenrahmenschema zu vergleichen (dem Schema, das aus der Datei im S3-Bucket abgeleitet wurde). Ein Problem kann darin bestehen, dass diese Endpunkte nicht in allen Regionen verfügbar sind. Beachten Sie, dass sich Ihre Daten und die Glue-Jobs .. in derselben Region befinden müssen, damit sie verwendet werden können.

Wenn Sie lokale Datenquellen haben, kann die „Daten-Pipeline“ Ihr Leben erleichtern. Sie können Eingabe- / Ausgabe- „Datenknoten“ definieren, dh den Speicherort / das Format von Daten (Datenknoten können MySQL, S3 usw. sein), und Voraussetzungen wie „Exists“ usw. festlegen. Sie können Daten aus Ihren lokalen Quellen problemlos migrieren auf S3 oder Redshift. Wenn Sie jedoch nur Spark-Transformationen für Ihre Daten in der AWS-Umgebung durchführen möchten, um einen Spark-Auftrag für EMR mit "Data Pipeline" auszuführen, müssen Sie 15 Minuten warten, bis der EMR-Cluster hochgefahren ist, während derselbe Spark-Auftrag ausgeführt wird kann mit Kleber in ein paar Minuten ausgeführt werden. Sie können DPU (Anzahl der Datenverarbeitungseinheiten) und Timeout einstellen. Es wird jedoch nicht empfohlen, mit Glue-Konfigurationen von Spark zu spielen. Die Einschränkungen können unter https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html eingesehen werden.

Bei Hadoop-Aktivitäten kann eine Aktivierung der EMR wünschenswert sein. Die Zwischenspeicherung von Dateien in HDFS kann ignoriert werden. Wenn Sie Ihre Daten stapelweise verarbeiten und planen, beispielsweise täglich / wöchentlich.

Ich entdecke noch immer Glue und seine Funktionen und arbeite daran, XML-Daten in Tabellenformate mit gewünschten Feldern umzuwandeln. Es ist gut, native Funktionen zur Umwandlung der unstrukturierten Daten in ein relationales Format zu haben (z. B. hat sich herausgestellt, dass die Verwendung von Glue-Klassifikatoren, die Sie mit einem Tag auswählen können, und das Reduzieren der verschachtelten Daten mit Glue relationalize () -Transformation wirklich einfach ist, was meinen Tag gemacht hat! ).

Außerdem frage ich mich, wie die Datenbereinigung / Fehlerprotokollierung auf Datensatzebene auf einfache Weise durchgeführt werden kann (was möglicherweise eine vorhandene Glue / Spark-Funktionalität ist).

Ich werde meine Klebestudien in den kommenden Geschichten Schritt für Schritt veröffentlichen.

Dies ist mein erster Beitrag, also hoffe ich, dass es dir überhaupt gefallen hat! :)