Konvertierung von Apache Oozie zu AWS Step Functions mit dem AWS Schema Conversion Tool - AWS Schema Conversion Tool

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konvertierung von Apache Oozie zu AWS Step Functions mit dem AWS Schema Conversion Tool

Um Apache Oozie-Workflows zu konvertieren, stellen Sie sicher, dass Sie AWS SCT Version 1.0.671 oder höher verwenden. Machen Sie sich auch mit der Befehlszeilenschnittstelle (CLI) von AWS SCT vertraut. Weitere Informationen finden Sie unter AWS SCT CLI-Referenz.

Übersicht über die Konvertierung

Ihr Apache Oozie-Quellcode umfasst Aktionsknoten, Kontrollflussknoten und Jobeigenschaften. Aktionsknoten definieren die Jobs, die Sie in Ihrem Apache Oozie-Workflow ausführen. Wenn Sie Apache Oozie verwenden, um Ihren Apache Hadoop-Cluster zu orchestrieren, enthält ein Aktionsknoten einen Hadoop-Job. Kontrollflussknoten bieten einen Mechanismus zur Steuerung des Workflow-Pfads. Zu den Kontrollflussknoten gehören Knoten wie startend,decision,fork, undjoin.

AWS SCTkonvertiert Ihre Quell-Action-Knoten und Control-Flow-Knoten inAWS Step Functions. In AWS Step Functions definieren Sie Ihre Workflows in der Amazon States Language (ASL). AWS SCTverwendet ASL, um Ihre Zustandsmaschine zu definieren, eine Sammlung von Zuständen, die arbeiten können, bestimmen, zu welchen Zuständen als nächstes übergegangen werden soll, mit einem Fehler aufhören und so weiter. Als Nächstes werden die JSON-Dateien mit den Definitionen von State Machines AWS SCT hochgeladen. Anschließend AWS SCT können Sie Ihre AWS Identity and Access Management (IAM-) Rolle verwenden, um Ihre State-Maschinen in AWS Step Functions zu konfigurieren. Weitere Informationen finden Sie unter Was ist AWS Step Functions? im AWS Step Functions-Entwicklerhandbuch.

AWS SCTErzeugt außerdem ein Erweiterungspaket mit AWS Lambda Funktionen, die die Quellfunktionen emulieren, die AWS Step Functions nicht unterstützt werden. Weitere Informationen finden Sie unter Verwenden von AWS SCT Erweiterungspaketen.

AWS SCTmigriert Ihre Quelljob-Eigenschaften zu. AWS Systems Manager AWS SCTVerwendet Parameter Store, eine Funktion von, um Parameternamen und -werte zu speichernAWS Systems Manager. Weitere Informationen finden Sie unter Was ist AWS Systems Manager? im AWS Systems Manager-Benutzerhandbuch.

Sie können verwendenAWS SCT, um die Werte und Namen Ihrer Parameter automatisch zu aktualisieren. Aufgrund der Architekturunterschiede zwischen Apache Oozie und AWS Step Functions müssen Sie möglicherweise Ihre Parameter konfigurieren. AWS SCTkann einen bestimmten Parameternamen oder Wert in Ihren Quelldateien finden und durch neue Werte ersetzen. Weitere Informationen finden Sie unter Schritt 3: Parameter konfigurieren.

Die folgende Abbildung zeigt das Architekturdiagramm der Apache Oozie-Konvertierung AWS Step Functions in.

Das Architekturdiagramm der Apache Oozie-Konvertierung zu. AWS Step Functions

Um die Konvertierung zu starten, erstellen Sie Ihr AWS SCT CLI-Skript und führen Sie es aus. Dieses Skript enthält den kompletten Befehlssatz zum Ausführen der Konvertierung. Sie können eine Vorlage des Apache Oozie Konvertierungsskripts herunterladen und bearbeiten. Weitere Informationen finden Sie unter CLI-Szenarien abrufen.

Stellen Sie sicher, dass Ihr Skript die folgenden Schritte enthält.

Schritt 1: Stellen Sie eine Verbindung zu Ihren Quell- und Zieldiensten her

Erstellen Sie ein neues AWS SCT Projekt, um mit der Konvertierung Ihres Apache Oozie-Clusters zu beginnen. Stellen Sie als Nächstes eine Verbindung zu Ihren Quell- und Zieldiensten her. Stellen Sie sicher, dass Sie Ihre AWS Zielressourcen erstellen und bereitstellen, bevor Sie mit der Migration beginnen. Weitere Informationen finden Sie unter Voraussetzungen für die Verwendung von Apache Oozie als Quelle.

In diesem Schritt verwenden Sie die folgenden AWS SCT CLI-Befehle.

  • CreateProject— um ein neues AWS SCT Projekt zu erstellen.

  • AddSource— um Ihre Apache Oozie-Quelldateien zu Ihrem AWS SCT Projekt hinzuzufügen.

  • ConnectSource— um eine Verbindung zu Apache Oozie als Quelle herzustellen.

  • AddTarget— um es Ihrem Projekt AWS Step Functions als Migrationsziel hinzuzufügen.

  • ConnectTarget— um eine Verbindung herzustellenAWS Step Functions.

Beispiele für die Verwendung dieser AWS SCT CLI-Befehle finden Sie unterApache Oozie als Quelle verwenden.

Wenn Sie die ConnectTarget Befehle ConnectSource oder ausführen, wird AWS SCT versucht, die Verbindung zu Ihren Diensten herzustellen. Wenn der Verbindungsversuch fehlschlägt, wird die Ausführung der Befehle aus Ihrem CLI-Skript AWS SCT beendet und eine Fehlermeldung angezeigt.

Schritt 2: Richten Sie die Zuordnungsregeln ein

Nachdem Sie eine Verbindung zu Ihren Quell- und Zieldiensten hergestellt haben, richten Sie die Zuordnungsregeln ein. Eine Zuordnungsregel definiert das Migrationsziel für Ihre Apache Oozie-Quellworkflows und -Parameter. Weitere Hinweise zu Zuordnungsregeln finden Sie unterErstellen von Zuordnungsregeln in AWS SCT.

Verwenden Sie den AddServerMapping Befehl, um Quell- und Zielobjekte für die Konvertierung zu definieren. Dieser Befehl verwendet zwei Parameter: sourceTreePath undtargetTreePath. Die Werte dieser Parameter beinhalten einen expliziten Pfad zu Ihren Quell- und Zielobjekten. Damit Apache Oozie AWS Step Functions konvertiert werden kann, müssen diese Parameter mit ETL beginnen.

Im folgenden Codebeispiel wird eine Zuordnungsregel für AWS_STEP_FUNCTIONS Objekte OOZIE und erstellt. Sie haben diese Objekte mit den AddTarget Befehlen AddSource und im vorherigen Schritt zu Ihrem AWS SCT Projekt hinzugefügt.

AddServerMapping -sourceTreePath: 'ETL.APACHE_OOZIE' -targetTreePath: 'ETL.AWS_STEP_FUNCTIONS' /

Weitere Informationen zu dem AddServerMapping Befehl finden Sie in der AWS Schema Conversion ToolCLI-Referenz.

Schritt 3: Parameter konfigurieren

Wenn Ihre Apache Oozie-Quellworkflows Parameter verwenden, müssen Sie möglicherweise deren Werte nach der Konvertierung in ändern. AWS Step Functions Möglicherweise müssen Sie auch neue Parameter hinzufügen, um sie mit Ihrem zu verwendenAWS Step Functions.

In diesem Schritt verwenden Sie die AddTargetParameter Befehle AddParameterMapping und.

Verwenden Sie den AddParameterMapping Befehl, um die Parameterwerte in Ihren Quelldateien zu ersetzen. AWS SCTscannt Ihre Quelldateien, findet die Parameter nach Namen oder Wert und ändert ihre Werte. Sie können einen einzigen Befehl ausführen, um alle Ihre Quelldateien zu scannen. Sie definieren den Umfang der zu scannenden Dateien mithilfe eines der ersten drei Parameter aus der folgenden Liste. Dieser Befehl verwendet bis zu sechs Parameter.

  • filterName— der Name des Filters für Ihre Quellobjekte. Mit dem CreateFilter Befehl können Sie einen Filter erstellen.

  • treePath— der explizite Pfad zu Ihren Quellobjekten.

  • namePath— der explizite Pfad zu einem bestimmten Quellobjekt.

  • sourceParameterName— der Name Ihres Quellparameters.

  • sourceValue— der Wert Ihres Quellparameters.

  • targetValue— der Wert Ihres Zielparameters.

Das folgende Codebeispiel ersetzt alle Parameter, bei denen der Wert gleich ist, c:\oozie\hive.py durch den s3://bucket-oozie/hive.py Wert.

AddParameterMapping -treePath: 'ETL.OOZIE.Applications' -sourceValue: 'c:\oozie\hive.py' -targetValue: 's3://bucket-oozie/hive.py' /

Das folgende Codebeispiel ersetzt alle Parameter, bei denen der Name gleich ist, nameNode durch den hdfs://ip-111-222-33-44.eu-west-1.compute.internal:8020 Wert.

AddParameterMapping -treePath: 'ETL.OOZIE_SOURCE.Applications' -sourceParameter: 'nameNode' -targetValue: 'hdfs://ip-111-222-33-44.eu-west-1.compute.internal:8020' /

Das folgende Codebeispiel ersetzt alle Parameter, bei denen der Name nameNode und der Wert gleich ist, hdfs://ip-55.eu-west-1.compute.internal:8020 durch den Wert des targetValue Parameters.

AddParameterMapping -treePath: 'ETL.OOZIE_SOURCE.Applications' -sourceParameter: 'nameNode' -sourceValue: 'hdfs://ip-55-66-77-88.eu-west-1.compute.internal:8020' -targetValue: 'hdfs://ip-111-222-33-44.eu-west-1.compute.internal:8020' /

Verwenden Sie den AddTargetParameter Befehl, um Ihren Zieldateien zusätzlich zu einem vorhandenen Parameter aus Ihren Quelldateien einen neuen Parameter hinzuzufügen. Dieser Befehl verwendet dieselben Parameter wie der AddParameterMapping Befehl.

Im folgenden Codebeispiel clusterId wird der Zielparameter anstelle des nameNode Parameters hinzugefügt.

AddTargetParameter -treePath: 'ETL.OOZIE_SOURCE.Applications' -sourceParameter: 'nameNode' -sourceValue: 'hdfs://ip-55-66-77-88.eu-west-1.compute.internal:8020' -targetParameter: 'clusterId' -targetValue: '1234567890abcdef0' /

Weitere Informationen zu den CreateFilter Befehlen AddServerMappingAddParameterMapping,AddTargetParameter, und finden Sie in der AWS Schema Conversion ToolCLI-Referenz.

Schritt 4: Erstellen Sie einen Bewertungsbericht

Bevor Sie mit der Konvertierung beginnen, empfehlen wir, einen Bewertungsbericht zu erstellen. Dieser Bericht fasst alle Migrationsaufgaben zusammen und beschreibt detailliert die Aktionspunkte, die während der Migration anfallen werden. Um sicherzustellen, dass Ihre Migration nicht fehlschlägt, sehen Sie sich diesen Bericht an und gehen Sie vor der Migration auf die Aktionspunkte ein. Weitere Informationen finden Sie unter Berichte über die Migrationsbewertung.

In diesem Schritt verwenden Sie den CreateReport Befehl. Dieser Befehl verwendet zwei Parameter. Der erste Parameter beschreibt die Quellobjekte, für die ein Bewertungsbericht AWS SCT erstellt wird. Verwenden Sie dazu einen der folgenden Parameter:filterName,treePath, odernamePath. Dieser Parameter ist obligatorisch. Sie können auch einen optionalen booleschen Parameter hinzufügen. forceLoad Wenn Sie diesen Parameter auf setzentrue, AWS SCT werden automatisch alle untergeordneten Objekte für das Quellobjekt geladen, das Sie im CreateReport Befehl angeben.

Im folgenden Codebeispiel wird ein Bewertungsbericht für den Applications Knoten Ihrer Oozie-Quelldateien erstellt.

CreateReport -treePath: 'ETL.APACHE_OOZIE.Applications' /

Anschließend können Sie eine Kopie des Bewertungsberichts als PDF oder als Datei mit kommagetrennten Werten (CSV) speichern. Verwenden Sie dazu den SaveReportCSV Befehl SaveReportPDF oder.

Der SaveReportPDF Befehl speichert eine Kopie Ihres Bewertungsberichts als PDF-Datei. Dieser Befehl verwendet vier Parameter. Der file Parameter ist obligatorisch, andere Parameter sind optional.

  • file— der Pfad zur PDF-Datei und ihr Name.

  • filter— der Name des Filters, den Sie zuvor erstellt haben, um den Umfang Ihrer zu migrierenden Quellobjekte zu definieren.

  • treePath— der explizite Pfad zu Ihren Quelldatenbankobjekten, für die Sie eine Kopie des Bewertungsberichts speichern.

  • namePath— der Pfad, der nur die Namen Ihrer Zielobjekte enthält, für die Sie eine Kopie des Bewertungsberichts speichern.

Der SaveReportCSV Befehl speichert Ihren Bewertungsbericht in CSV-Dateien. Dieser Befehl verwendet vier Parameter. Der directory Parameter ist obligatorisch, andere Parameter sind optional.

  • directory— der Pfad zu dem Ordner, in dem die CSV-Dateien AWS SCT gespeichert sind.

  • filter— der Name des Filters, den Sie zuvor erstellt haben, um den Umfang Ihrer zu migrierenden Quellobjekte zu definieren.

  • treePath— der explizite Pfad zu Ihren Quelldatenbankobjekten, für die Sie eine Kopie des Bewertungsberichts speichern.

  • namePath— der Pfad, der nur die Namen Ihrer Zielobjekte enthält, für die Sie eine Kopie des Bewertungsberichts speichern.

Im folgenden Codebeispiel wird eine Kopie des Bewertungsberichts in der c:\sct\ar.pdf Datei gespeichert.

SaveReportPDF -file:'c:\sct\ar.pdf' /

Im folgenden Codebeispiel wird eine Kopie des Bewertungsberichts als CSV-Datei im c:\sct Ordner gespeichert.

SaveReportCSV -file:'c:\sct' /

Weitere Informationen zu den CreateReport SaveReportCSV Befehlen SaveReportPDF und finden Sie in der AWS Schema Conversion ToolCLI-Referenz.

Schritt 5: Konvertieren Sie Ihre Apache Oozie-Workflows auf mit AWS Step FunctionsAWS SCT

Nachdem Sie Ihr AWS SCT Projekt konfiguriert haben, konvertieren Sie Ihren Quellcode und wenden Sie ihn auf das anAWS Cloud.

In diesem Schritt verwenden Sie die ApplyToTarget Befehle Convert SaveOnS3ConfigureStateMachine,, und.

Der Migrate Befehl migriert Ihre Quellobjekte zum Zielcluster. Dieser Befehl verwendet vier Parameter. Stellen Sie sicher, dass Sie den treePath Parameter filter oder angeben. Andere Parameter sind optional.

  • filter— der Name des Filters, den Sie zuvor erstellt haben, um den Umfang Ihrer zu migrierenden Quellobjekte zu definieren.

  • namePath— der explizite Pfad zu einem bestimmten Quellobjekt.

  • treePath— der explizite Pfad zu Ihren Quelldatenbankobjekten, für die Sie eine Kopie des Bewertungsberichts speichern.

  • forceLoad— Wenn auf gesetzttrue, AWS SCT werden Datenbank-Metadatenbäume während der Migration automatisch geladen. Der Standardwert ist false.

Das folgende Codebeispiel konvertiert Dateien aus dem Applications Ordner in Ihren Oozie-Quelldateien.

Convert -treePath: 'ETL.APACHE_OOZIE.Applications' /

Der SaveOnS3 lädt die Definitionen der State Machines in Ihren Amazon S3-Bucket hoch. Dieser Befehl verwendet den treePath Parameter. Um diesen Befehl auszuführen, verwenden Sie den Zielordner mit den Definitionen von State Machines als Wert dieses Parameters.

Im Folgenden wird der State machine definitions Ordner Ihres AWS_STEP_FUNCTIONS Zielobjekts in den Amazon S3-Bucket hochgeladen. AWS SCTverwendet den Amazon S3-Bucket, den Sie im Voraussetzungen Schritt im AWS Serviceprofil gespeichert haben.

SaveOnS3 -treePath: 'ETL.AWS_STEP_FUNCTIONS.State machine definitions' /

Der ConfigureStateMachine Befehl konfiguriert Zustandsmaschinen. Dieser Befehl verwendet bis zu sechs Parameter. Stellen Sie sicher, dass Sie den Zielbereich mithilfe eines der ersten drei Parameter aus der folgenden Liste definieren.

  • filterName— der Name des Filters für Ihre Zielobjekte. Mit dem CreateFilter Befehl können Sie einen Filter erstellen.

  • treePath— der explizite Pfad zu Ihren Zielobjekten.

  • namePath— der explizite Pfad zu einem bestimmten Zielobjekt.

  • iamRole— der Amazon-Ressourcenname (ARN) der IAM-Rolle, die Zugriff auf Ihre Step-Machines bietet. Dieser Parameter muss angegeben werden.

Im folgenden Codebeispiel werden State-Maschinen konfiguriert, die AWS_STEP_FUNCTIONS mithilfe der IAM-Rolle role_name definiert sind.

ConfigureStateMachine -treePath: 'ETL.AWS_STEP_FUNCTIONS.State machine definitions' -role: 'arn:aws:iam::555555555555:role/role_name' /

Der ApplyToTarget Befehl wendet Ihren konvertierten Code auf den Zielserver an. Verwenden Sie einen der folgenden Parameter, um diesen Befehl auszuführen:filterName,treePath, oder namePath um die anzuwendenden Zielobjekte zu definieren.

Im folgenden Codebeispiel wird die app_wp State-Maschine auf angewendetAWS Step Functions.

ApplyToTarget -treePath: 'ETL.AWS_STEP_FUNCTIONS.State machines.app_wp' /

Um sicherzustellen, dass Ihr konvertierter Code dieselben Ergebnisse wie Ihr Quellcode liefert, können Sie das AWS SCT Erweiterungspaket verwenden. Dies ist eine Reihe von AWS Lambda Funktionen, die Ihre Apache Oozie-Funktionen emulieren, die AWS Step Functions nicht unterstützt werden. Um dieses Erweiterungspaket zu installieren, können Sie den CreateLambdaExtPack Befehl verwenden.

Dieser Befehl verwendet bis zu fünf Parameter. Stellen Sie sicher, dass Sie Oozie2SF für verwendenextPackId. In diesem Fall AWS SCT erstellt es ein Erweiterungspaket für die Quellfunktionen von Apache Oozie.

  • extPackId— die eindeutige Kennung für eine Reihe von Lambda-Funktionen. Dieser Parameter muss angegeben werden.

  • tempDirectory— der Pfad, in dem temporäre Dateien gespeichert werden AWS SCT können. Dieser Parameter muss angegeben werden.

  • awsProfile— der Name Ihres AWS Profils.

  • lambdaExecRoles— die Liste der Amazon Resource Names (ARNs) der Ausführungsrollen, die für Lambda-Funktionen verwendet werden sollen.

  • createInvokeRoleFlag— das boolesche Flag, das angibt, ob eine Ausführungsrolle für erstellt werden soll. AWS Step Functions

Um das Erweiterungspaket zu installieren und zu verwenden, stellen Sie sicher, dass Sie die erforderlichen Berechtigungen bereitstellen. Weitere Informationen finden Sie unter Berechtigungen für die Verwendung von AWS Lambda Funktionen im Erweiterungspaket.

Weitere Informationen zu den CreateLambdaExtPack Befehlen ConvertSaveOnS3,ConfigureStateMachine,ApplyToTarget, und finden Sie in der AWS Schema Conversion ToolCLI-Referenz.

Ihr CLI-Skript ausführen

Nachdem Sie die Bearbeitung Ihres AWS SCT CLI-Skripts abgeschlossen haben, speichern Sie es als Datei mit der .scts Erweiterung. Jetzt können Sie Ihr Skript aus dem app Ordner Ihres AWS SCT Installationspfads ausführen. Führen Sie dazu den folgenden Befehl aus.

RunSCTBatch.cmd --pathtoscts "C:\script_path\oozie.scts"

Ersetzen Sie im vorherigen Beispiel script_path durch den Pfad zu Ihrer Datei mit dem CLI-Skript. Weitere Hinweise zum Ausführen von CLI-Skripten in finden Sie AWS SCT unterSkriptmodus.

Apache Oozie-Knoten, die konvertiert AWS SCT werden können in AWS Step Functions

Sie können AWS SCT Apache Oozie Action-Knoten und Control-Flow-Knoten in AWS Step Functions konvertieren.

Zu den unterstützten Aktionsknoten gehören die folgenden:

  • Aktion im Bienenstock

  • Hive2-Aktion

  • Funke Action

  • MapReduceStreaming-Aktion

  • Java-Aktion

  • DistCp-Aktion

  • Aktion Schwein

  • Sqoop-Aktion

  • FS-Aktion

  • Shell-Aktion

Zu den unterstützten Kontrollflussknoten gehören die folgenden:

  • Aktion starten

  • Aktion beenden

  • Aktion beenden

  • Entscheidung, Aktion

  • Gabelwirkung

  • Nimm an der Aktion teil