で Oozie ワークフローを に変換 AWS Step Functions する AWS Schema Conversion Tool - AWS Schema Conversion Tool

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

で Oozie ワークフローを に変換 AWS Step Functions する AWS Schema Conversion Tool

Apache Oozie ワークフローを変換するには、 AWS SCT バージョン 1.0.671 以降を使用していることを確認してください。また、 のコマンドラインインターフェイス (CLI) について理解しておく必要があります AWS SCT。詳細については、「CLI のリファレンス AWS Schema Conversion Tool」を参照してください。

変換の概要

Apache Oozie ソースコードには、アクションノード、制御フローノード、ジョブプロパティが含まれます。アクションノードは Apache Oozie ワークフローで実行するジョブを定義します。Apache Oozie を使用して Apache Hadoop クラスターをオーケストレーションする場合、アクションノードには Hadoop ジョブが含まれます。制御フローノードは、ワークフローパスを制御するメカニズムを提供します。制御フローノードにはstartenddecisionforkjoin などのノードが含まれます。

AWS SCT は、ソースアクションノードとコントロールフローノードを に変換します AWS Step Functions。では AWS Step Functions、Amazon ステートメント言語 () でワークフローを定義しますASL。 AWS SCT を使用してステートマシンASLを定義します。ステートマシンはステートマシンのコレクションであり、作業を実行したり、次に移行するステートを決定したり、エラーで停止したりすることができます。次に、 はステートマシン定義を含むJSONファイル AWS SCT をアップロードします。次に、 AWS Identity and Access Management (IAM) ロール AWS SCT を使用して、 でステートマシンを設定できます AWS Step Functions。詳細については、「 AWS Step Functions デベロッパーガイド」の「 とは AWS Step Functions」を参照してください。

また、 は、サポート AWS Step Functions されていないソース AWS Lambda 関数をエミュレートする関数を含む拡張パック AWS SCT を作成します。詳細については、「での拡張パックの使用 AWS Schema Conversion Tool」を参照してください。

AWS SCT はソースジョブのプロパティを に移行します AWS Systems Manager。パラメータ名と値を保存するために、 AWS SCT は の一機能である Parameter Store を使用します AWS Systems Manager。詳細については、「 ユーザーガイド」の「 とは AWS Systems ManagerAWS Systems Manager 」を参照してください。

を使用して AWS SCT 、パラメータの値と名前を自動的に更新できます。Apache Oozie と のアーキテクチャの違いにより AWS Step Functions、パラメータの設定が必要になる場合があります。 AWS SCT は、ソースファイルで指定されたパラメータ名または値を検索し、新しい値に置き換えることができます。詳細については、「ステップ 3: パラメータを設定する」を参照してください。

次の図は、Apache Oozie から への変換のアーキテクチャ図を示しています AWS Step Functions。

Apache Oozie から への変換のアーキテクチャ図 AWS Step Functions。

変換を開始するには、スクリプトを作成して実行します AWS SCT CLI。このスクリプトには、変換を実行するためのコマンド一式が含まれています。Apache Oozie 変換スクリプトのテンプレートをダウンロードして編集できます。詳細については、「CLI シナリオの取得」を参照してください。

スクリプトに次の手順が含まれていることを確認します。

ステップ 1: ソースサービスとターゲットサービスConnect する

Apache Oozie クラスターの変換を開始するには、新しい AWS SCT プロジェクトを作成します。次に、ソースサービスとターゲットサービスに接続します。移行を開始する前に、必ずターゲット AWS リソースを作成してプロビジョニングしてください。詳細については、「Apache Oozie をソースとして使用する場合の前提条件」を参照してください。

このステップでは、次の AWS SCT CLIコマンドを使用します。

  • CreateProject – 新しい AWS SCT プロジェクトを作成します。

  • AddSource — ソースの Apache Oozie ファイルを AWS SCT プロジェクトに追加します。

  • ConnectSource — ソースとして Apache Oozie に接続するためのものです。

  • AddTarget – を移行ターゲット AWS Step Functions としてプロジェクトに追加します。

  • ConnectTarget – AWS Step Functionsに接続します。

これらの AWS SCT CLIコマンドの使用例については、「」を参照してくださいApache Oozie への接続

ConnectSource または ConnectTarget コマンドを実行すると、 はサービスへの接続を確立 AWS SCT しようとします。接続の試行が失敗すると、 はCLIスクリプトからのコマンドの実行 AWS SCT を停止し、エラーメッセージを表示します。

ステップ 2: マッピングルールを設定する

ソースサービスとターゲットサービスに接続したら、マッピングルールを設定します。マッピングルールは、ソース Apache Oozie ワークフローとパラメータの移行ターゲットを定義します。テーブルマッピングの詳細については、「でのデータ型のマッピング AWS Schema Conversion Tool」を参照してください。

変換するソースオブジェクトとターゲットオブジェクトを定義するには、AddServerMapping コマンドを使用します。このコマンドでは、sourceTreePathtargetTreePath 2 つのパラメータを使用します。これらのパラメータの値には、ソースオブジェクトとターゲットオブジェクトへの明示的なパスが含まれます。Apache Oozie を AWS Step Functions に変換するには、これらのパラメータは ETL で始まる必要があります。

次のコード例では、OOZIE オブジェクトと AWS_STEP_FUNCTIONS オブジェクトのマッピングルールを作成しています。前のステップの AddSourceおよび AddTarget コマンドを使用して、これらのオブジェクトを AWS SCT プロジェクトに追加しました。

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

AddServerMapping コマンドの詳細については、「 AWS Schema Conversion Tool CLIリファレンス」を参照してください。

ステップ 3: パラメータを設定する

ソース Apache Oozie ワークフローでパラメータを使用している場合は、 AWS Step Functionsへの変換後にパラメータの値を変更しなければならない場合があります。また、 で使用する新しいパラメータを追加する必要がある場合もあります AWS Step Functions。

このステップでは、AddParameterMapping および AddTargetParameter コマンドを使用します。

ソースファイル内のパラメータ値を置き換えるには、AddParameterMapping コマンドを使用します。 AWS SCT はソースファイルをスキャンし、名前または値でパラメータを検索し、値を変更します。1 つのコマンドを実行してすべてのソースファイルをスキャンできます。スキャンするファイルの範囲は、以下のリストの最初の 3 つのパラメータのいずれかを使用して定義します。このコマンドは最大で 6 つのパラメータを使用します。

  • filterName — ソースオブジェクトのフィルターの名前。CreateFilter コマンドを使用してフィルタを作成できます。

  • treePath — ソースオブジェクトへの明示的なパス。

  • namePath — 特定のソースオブジェクトへの明示的なパス。

  • sourceParameterName — ソースパラメータの名前。

  • sourceValue — ソースパラメータの値。

  • targetValue — ターゲットパラメータの値。

次のコード例では、c:\oozie\hive.py 値が等しいすべてのパラメータを s3://bucket-oozie/hive.py 値に置き換えます。

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

次のコード例では、名前が nameNode と同じであるすべてのパラメーターを hdfs://ip-111-222-33-44.eu-west-1.compute.internal:8020 値に置き換えます。

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

次のコード例では、名前が nameNode と同じで、値が hdfs://ip-55.eu-west-1.compute.internal:8020 と等しいすべてのパラメータを targetValue パラメータの値に置き換えます。

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' /

ソースファイルの既存のパラメータに加えて、ターゲットファイルに新しいパラメータを追加するには、AddTargetParameter コマンドを使用します。このコマンドは、AddParameterMapping コマンドと同じパラメータセットを使用します。

次のコード例では、nameNode パラメーターの代わりに clusterId ターゲットパラメーターを追加しています。

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' /

AddServerMapping、、、および CreateFilter コマンドの詳細についてはAddTargetParameter、「 AWS Schema Conversion Tool CLIリファレンスAddParameterMapping」を参照してください。

ステップ 4: 評価レポートを作成する

変換を開始する前に、評価レポートを作成することをおすすめします。このレポートには、すべての移行タスクがまとめられ、移行中に明らかになるアクションアイテムが詳しく説明されています。移行が失敗しないようにするには、このレポートを参照して、移行前のアクションアイテムに対処してください。詳細については、「評価レポート」を参照してください。

このステップでは、CreateReport コマンドを使用します。このコマンドは、2 つのパラメータを使用します。最初のパラメータは、 が評価レポート AWS SCT を作成するソースオブジェクトを記述します。そのためには、filterNametreePath、または namePath のいずれかのパラメーターを使用します。このパラメータは必須です。オプションの Boolean パラメータ forceLoad を追加することもできます。このパラメータを に設定するとtrue、 は CreateReport コマンドで指定したソースオブジェクトのすべての子オブジェクト AWS SCT を自動的にロードします。

次のコード例では、ソース Oozie ファイルの Applications ノードの評価レポートを作成します。

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

その後、評価レポートのコピーを PDFまたはカンマ区切り値 (CSV) ファイルとして保存できます。これを行うには、SaveReportPDF コマンドまたは SaveReportCSV コマンドを使用します。

SaveReportPDF コマンドは、評価レポートのコピーをPDFファイルとして保存します。このコマンドは、4 つのパラメータを使用します。file パラメータは必須です。他のパラメータはオプションです。

  • file - PDF ファイルへのパスとその名前。

  • filter — 移行するソースオブジェクトの範囲を定義するために以前に作成したフィルタの名前。

  • treePath — 評価レポートのコピーを保存するソースデータベースオブジェクトへの明示的なパス。

  • namePath — 評価レポートのコピーを保存する対象オブジェクトの名前のみを含むパス。

SaveReportCSV コマンドは、評価レポートをCSVファイルに保存します。このコマンドは、4 つのパラメータを使用します。directory パラメータは必須です。他のパラメータはオプションです。

  • directory – がCSVファイル AWS SCT を保存するフォルダへのパス。

  • filter — 移行するソースオブジェクトの範囲を定義するために以前に作成したフィルタの名前。

  • treePath — 評価レポートのコピーを保存するソースデータベースオブジェクトへの明示的なパス。

  • namePath — 評価レポートのコピーを保存する対象オブジェクトの名前のみを含むパス。

次のコード例では、評価レポートのコピーを c:\sct\ar.pdf ファイルに保存しています。

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

次のコード例では、評価レポートのコピーを CSV ファイルとして c:\sctフォルダに保存します。

SaveReportCSV -file:'c:\sct' /

、、 SaveReportPDF コマンドの詳細についてはCreateReportSaveReportCSVAWS Schema Conversion Tool CLIリファレンス」を参照してください。

ステップ 5: AWS Step Functions を使用して Apache Oozie ワークフローを に変換する AWS SCT

AWS SCT プロジェクトを設定したら、ソースコードを変換して に適用します AWS クラウド。

このステップでは、 ConvertSaveOnS3ConfigureStateMachineApplyToTarget コマンドを使用します。

Migrate コマンドは、ソースオブジェクトをターゲットクラスターに移行します。このコマンドは、4 つのパラメータを使用します。必ず filter または treePathパラメータを指定してください。その他のパラメータは省略可能です。

  • filter — 移行するソースオブジェクトの範囲を定義するために以前に作成したフィルタの名前。

  • namePath — 特定のソースオブジェクトへの明示的なパス。

  • treePath — 評価レポートのコピーを保存するソースデータベースオブジェクトへの明示的なパス。

  • forceLoad – に設定するとtrue、移行中にデータベースメタデータツリー AWS SCT が自動的にロードされます。デフォルト値は false です。

次のコード例は、ソース Oozie ファイル内の Applications フォルダからファイルを変換します。

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

SaveOnS3 は、Amazon S3 バケットにステートマシンの定義をアップロードします。このコマンドは treePath パラメータを使用します。このコマンドを実行するには、ステートマシン定義を含むターゲットフォルダをこのパラメータの値として使用します。

以下では、AWS_STEP_FUNCTIONSターゲットオブジェクトの State machine definitionsフォルダを Amazon S3 bucket にアップロードします。 は、 前提条件 ステップ AWS のサービスプロファイルに保存した Amazon S3 バケット AWS SCT を使用します。

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

ConfigureStateMachine コマンドはステートマシンを設定します。このコマンドは最大で 6 つのパラメータを使用します。ターゲットスコープは、必ず以下のリストの最初の 3 つのパラメータのいずれかを使用して定義してください。

  • filterName — ターゲットオブジェクトのフィルターの名前。CreateFilter コマンドを使用してフィルターを作成できます。

  • treePath — ターゲットオブジェクトへの明示的なパス。

  • namePath — 特定のターゲットオブジェクトへの明示的なパス。

  • iamRole – ステップマシンへのアクセスを提供するIAMロールの Amazon リソースネーム (ARN)。このパラメータは必須です。

次のコード例では、 AWS_STEP_FUNCTIONSを使用して で定義されたステートマシンを設定します。role_name IAM ロール。

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

ApplyToTarget コマンドは、変換されたコードをターゲットサーバーに適用します。このコマンドを実行するには、filterNametreePath、または namePath のいずれかのパラメータを使用して、適用するターゲットオブジェクトを定義します。

次のコード例では、app_wpステートマシンを に適用します AWS Step Functions。

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

変換したコードがソースコードと同じ結果になるようにするには、 AWS SCT 拡張パックを使用できます。これは、 がサポートしていない Apache Oozie AWS Lambda 関数をエミュレートする AWS Step Functions 一連の関数です。CreateLambdaExtPack コマンドを使用して、この拡張パックをインストールできます。

このコマンドは最大 5 つのパラメータを使用します。必ず extPackId 用の Oozie2SF を使用してください。この場合、 はソース Apache Oozie 関数用の拡張パック AWS SCT を作成します。

  • extPackId — 一連の Lambda 関数の一意の識別子。このパラメータは必須です。

  • tempDirectory – が一時ファイルを保存 AWS SCT できるパス。このパラメータは必須です。

  • awsProfile – AWS プロファイルの名前。

  • lambdaExecRoles – Lambda 関数に使用する実行ロールの Amazon リソースネーム (ARNs) のリスト。

  • createInvokeRoleFlag — AWS Step Functionsの実行ロールを作成するかどうかを示すブール型フラグ。

拡張パックをインストールして使用するには、必要な許可を与えていることを確認します。詳細については、「拡張パックで AWS Lambda 関数を使用するためのアクセス許可」を参照してください。

Convert、、、SaveOnS3ApplyToTargetおよび CreateLambdaExtPack コマンドの詳細については、「 AWS Schema Conversion Tool CLIリファレンスConfigureStateMachine」を参照してください。

CLI スクリプトの実行

スクリプトの編集 AWS SCT CLIが完了したら、 .scts拡張子を持つファイルとして保存します。これで、 AWS SCT インストールパスの appフォルダからスクリプトを実行できます。そのためには、次のコマンドを使用します。

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

前の例では、script_path CLI スクリプトで ファイルへのパスを指定します。でのCLIスクリプトの実行の詳細については、 AWS SCT「」を参照してくださいスクリプトモード

に変換 AWS SCT できる Apache Oozie ノード AWS Step Functions

を使用して AWS SCT 、Apache Oozie アクションノードと制御フローノードを に変換できます AWS Step Functions。

サポートされているアクションノードは次のとおりです。

  • Hive アクション

  • Hive2 アクション

  • Spark アクション

  • MapReduce ストリーミングアクション

  • Java アクション

  • DistCp アクション

  • Pig アクション

  • Sqoop アクション

  • FS アクション

  • Shell アクション

サポートされている制御フローノードは次のとおりです。

  • Start アクション

  • End アクション

  • Kill アクション

  • Decision アクション

  • Fork アクション

  • Join アクション